在 google 中迭代搜索一本书名,然后单击 amazon.com 中的链接

我正在使用以下脚本


from selenium import webdriver

import time

import urllib.parse


browser = webdriver.Chrome()


with open("google-search-terms.adoc") as fin:

    for line_no, line in enumerate(fin):

        line = line.strip()

        query = urllib.parse.urlencode({'q': line})

        browser.execute_script(

            f"window.open('https://www.google.com/search?{query}');")


for x in range(len(browser.window_handles)):

    browser.switch_to.window(browser.window_handles[x])

    time.sleep(3)

    try:

        browser.find_elements_by_xpath(

            "//*[@id='rso']/div/div/div/a/div/cite[contains(text(),'amazon')]").click()

    except:

        pass

输入文件google-search-terms.adoc包含:


The Effective Executive by Peter Drucker

The Functions of the Executive

它打开多个选项卡,其中包含输入文件中文本的搜索结果。它每 3 秒循环一次选项卡。然而点击的不是预期的搜索结果?


这里有什么问题吗?


青春有我
浏览 86回答 1
1回答

慕容森

谷歌有一项功能,您可以从特定网站获取结果。因此,这里的过程只是通过该功能进行搜索并单击找到的第一个链接:from selenium import webdriverimport timeimport urllib.parsebrowser = webdriver.Chrome()with open("google-search-terms.adoc") as fin:    for line_no, line in enumerate(fin):        line = line.strip()        query = urllib.parse.urlencode({'q': line + " site:amazon.com"})        browser.execute_script(            f"window.open('https://www.google.com/search?{query}');")for x in range(len(browser.window_handles)):    browser.switch_to.window(browser.window_handles[x])    time.sleep(2)    try:        result = browser.find_elements_by_xpath('//div[@id="rso"]/div/div')[0]         result.find_element_by_xpath("./div/a").click()    except:        continue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python