为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2023-10-11 22:55:29
我正在使用以下脚本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})        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 DruckerThe Functions of the Executive它打开多个选项卡,其中包含输入文件中文本的搜索结果。它每 3 秒循环一次选项卡。然而点击的不是预期的搜索结果?这里有什么问题吗?
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

谷歌有一项功能,您可以从特定网站获取结果。因此,这里的过程只是通过该功能进行搜索并单击找到的第一个链接:


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 + " 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


查看完整回答
反对 回复 2023-10-11
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信