2017-10-16 96 views
1

一個簡單的問題。我可以從duckduckgo搜索的第一頁中搜索結果。不過,我正在努力進入第二頁以後的頁面。我已經使用了Python的Selenium webdriver,這對第一頁結果來說很好。 我用刮的第一頁中的代碼是: -用Python 3.6刮Duckduckgo

results_url = "https://duckduckgo.com/?q=paralegal&t=h_&ia=web" 
browser.get(results_url) 
results = browser.find_elements_by_id('links') 
num_page_items = len(results) 
for i in range(num_page_items): 
    print(results[i].text) 
    print(len(results)) 

nxt_page = browser.find_element_by_link_text("Load More") 
if nxt_page: 
    nxt_page.send_keys(Keys.PAGE_DOWN)" 

有表示新的一頁開始換行,但他們似乎並沒有改變網址,所以我試圖向下移動上述該頁面,然後重複查找next_page上的鏈接的代碼。但它不起作用。 任何幫助將非常讚賞

回答

0

如果我在結果的源代碼中搜索Load More我找不到它。您是否嘗試使用非javascript的版本?

您可以使用它只需添加html到的網址: https://duckduckgo.com/html?q=paralegal&t=h_&ia=web 那裏你可以找到在年底next按鈕。

這一個對我的作品(Chrome版本):

results_url = "https://duckduckgo.com/html?q=paralegal&t=h_&ia=web" 
browser.get(results_url) 
results = browser.find_elements_by_id('links') 
num_page_items = len(results) 
for i in range(num_page_items): 
    print(results[i].text) 
    print(len(results)) 
nxt_page = browser.find_element_by_class_name('btn--alt') 
if nxt_page: 
    browser.execute_script('arguments[0].scrollIntoView();', nxt_page) 
    nxt_page.click() 

順便說一句:Duckduckgo還提供了一個很好的API,這可能是更容易使用;)

+1

謝謝你的。我在Selenium IDE中使用了html,並且所有工作都在那裏,但是當我將代碼傳輸到Visual Studio時,錯誤一直顯示爲'找不到元素'。不過,我現在用cssselector解決了這個問題。我的代碼是nxt_page = browser.find_element_by_css_selector(「input.btn」) nxt_page.click() - 這是一個找到按鈕。感謝您的幫助。 – user8784011