2017-10-16 62 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