問題是,頁面加載後,ID爲total_results
的元素的值發生了變化,首先它包含117
,然後更改爲44
。
相反,這裏是一個更強大的方法。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Firefox()
url = 'http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true#/search/?searchText=bevacizumab&mode=&staticTitle=false&SEARCHTYPE_all2=true&SEARCHTYPE_all1=&SEARCHTYPE=GUIDANCE&TOPICLVL0_all2=true&TOPICLVL0_all1=&HIDEFILTER=TOPICLVL1&HIDEFILTER=TOPICLVL2&TREATMENTS_all2=true&TREATMENTS_all1=&GUIDANCETYPE_all2=true&GUIDANCETYPE_all1=&STATUS_all2=true&STATUS_all1=&HIDEFILTER=EGAPREFERENCE&HIDEFILTER=TOPICLVL3&DATEFILTER_ALL=ALL&DATEFILTER_PREV=ALL&custom_date_from=&custom_date_to=11-06-2014&PAGINATIONURL=%2FSearch.do%3FsearchText%40%40bevacizumab%26newsearch%40%40true%26page%40%40&SORTORDER=BESTMATCH'
driver.get(url)
page_number = 1
while True:
try:
link = driver.find_element_by_link_text(str(page_number))
except NoSuchElementException:
break
link.click()
print driver.current_url
page_number += 1
基本上,這裏的想法是讓下一個頁面鏈接,直到有沒有這樣的(NoSuchElementException
將會被拋出):它通過網頁,直到有沒有更多的頁面留下處理頁面。請注意,它適用於任意數量的頁面和結果。
它打印:
http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true&page=1
http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true&page=2#showfilter
http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true&page=3#showfilter
http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true&page=4#showfilter
http://www.nice.org.uk/Search.do?searchText=bevacizumab&newsearch=true&page=5#showfilter
噢,這是一個很好的工作。但是我需要在其中添加其他功能。如果我有任何問題,我可以回覆你嗎? – user3691767
@ user3691767當然,如果您需要進一步的幫助,請考慮創建單獨的SO問題。此外,如果解決此問題,請考慮接受您認爲應得的答案。謝謝。 – alecxe
你剛剛讓我的一天@alecxe我正要花費整晚思考如何解決這個問題。我現在可以遍歷每個搜索結果並獲取所需的數據。太感謝了!!!! – user3691767