私はページを掻き集めてすべてのリンクを収集したい。このページには30のエントリが表示され、完全なリストを表示するには、すべてをロードするボタンをクリックする必要があります。ボタンをクリックしてSeleniumで追加の要素をロードした後に完全なHTMLを読み込む
私は次のコードを使用しています:
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.PhantomJS()
driver.get('http://www.christies.com/lotfinder/searchresults.aspx?&searchfrom=header&lid=1&entry=edgar%20degas&searchtype=p&action=paging&pg=all')
labtn = driver.find_element_by_css_selector('a.load-all')
labtn.click()
elem = driver.find_element_by_xpath("//*")
source_code = elem.get_attribute("outerHTML")
soup = BeautifulSoup(source_code, 'lxml')
url_list = []
for div in soup.find_all(class_ ='image-container'):
for childdiv in div.find_all('a'):
url_list.append(childdiv['href'])
print(url_list)
は、ここで私はまだ元の30個のリンクと初期のコードを取得していますHTMLマークアップ
<div class="loadAllbtn">
<a class="load-all" id="loadAllUpcomingPast" href="javascript:void(0);">Load all</a>
</div>
です。私はセレンを正しく使用していないようで、私が間違っていることを知りたいと思っています。
これまでのところセレンが働いています。ノードJSがインストールされ、私はスクリーンショットを作成してファイルに保存しました。
私はあなたのコードを試しました。それが初めて働いたとき、それはしなかった。それから、秒を増やしました。今は大丈夫です。ありがとうございました – zinyosrim