首页 > 解决方案 > 使用自定义用户代理字符串时 Selenium 缺少标签

问题描述

使用自定义 user_agent 时,带有 Firefox 的 Selenium(在 Python 中)无法找到标签。

构建一个基于 python 的谷歌爬虫来收集从谷歌查询生成的 URL 的第一页。Selenium 用于打开页面并输入查询。find_element_by_tag_name('a') 然后应用于查找包含 url 的目标元素。

例如,如果搜索的查询是“facebook.com”,我正在寻找类似以下的元素“例如

<a href="/url?q=https://www.facebook............ </a>

在默认用户字符串上完美运行:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0

找不到自定义用户字符串的所有标签:

Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1) Gecko/20090624 Firefox/3.5

请注意,搜索“a”的标签对所有用户代理都是通用的。失败时返回的“a”标签几乎完全与谷歌特定的链接相关联,例如

https://www.google.com/intl/en_uk/policies/terms/?fg=1

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options

query = 'facebook'
user = "Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1) Gecko/20090624 Firefox/3.5"

profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", user)
options = Options()
browser = webdriver.Firefox(profile, options=options)

browser.get('https://www.google.com')
search_bar = browser.find_element_by_name('q')
search_bar.send_keys(query)
search_bar.send_keys(Keys.RETURN)
time.sleep(10)
print('\n Current url: ', self.browser.current_url) #check loaded
elements = browser.find_elements_by_tag_name('a')
print('Elements returned: ', len(elements))
url_list = [element.get_attribute("href") for element in elements]

期望,对于包含链接到查询的 url 的元素

结果实际,元素找到所有参考谷歌

标签: pythonseleniumtagsuser-agent

解决方案


推荐阅读