python - 使用自定义用户代理字符串时 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 的元素
结果实际,元素找到所有参考谷歌
解决方案
推荐阅读
- javascript - 打开多个选项卡,将方法附加到它们并让它们在各自的选项卡上运行
- reactjs - 用于家族树 Neo4J 和 React Tree Graph 的 JSON
- reactjs - 我不断收到此错误。类型错误:addItems 不是函数。(在 'addItems(text)' 中,'addItems' 是 Object 的一个实例)
- python - datetime.datetime.strptime("%d/%m/%Y %H:%M:%S").timetuple().tm_hour
- sql-server - SSIS 变量表达式 - 转换为字符串
- python - SQLAlchemy:从连接中获取数据库名称
- php - 无需提交即可获取表单的输入值并将其放在php中的变量中
- android - 我们可以检测到主页启动器更改事件吗
- javascript - 使用 emberJS 从子级重定向后触发父级重定向
- gnome - 关闭盖子后 Ubuntu 20.04 未锁定