我正在使用硒和铬在谷歌上搜索。但是它返回了不同的分页布局。我正在使用不同的代理和使用fake_useragent库的不同的用户代理。
我只想要第二个图像布局。有没有人知道我怎么每次都能得到它?
发布于 2021-04-20 22:20:52
问题是,即使我更新了数据库,fake_useragent库有时也会返回旧的用户代理。我尝试过这个库(https://pypi.org/project/latest-user-agents/),它返回较新的用户代理。
以下是工作代码。
from latest_user_agents import get_latest_user_agents
import random
from selenium import webdriver
PATH = 'C:\Program Files (x86)\chromedriver.exe'
proxy = ''
url = ''
user_agent = random.choice(get_latest_user_agents())
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server={proxy}')
options.add_argument(f'user-agent={user_agent}')
driver = webdriver.Chrome(PATH, options=options)
driver.get(url)
发布于 2021-04-19 20:15:06
这两种布局的不同之处在于,当您禁用javascript时,Google会将分页显示为第一个图像布局。
为了确保每次都能得到第二个布局,您需要确保启用了javascript。
如果你有selenium提供的chrome驱动程序,比如:options = webdriver.ChromeOptions()
,下面的代码将确保javascript始终处于启用状态:
options.add_argument("--enable-javascript")
基于OP的注释的编辑
我是通过使用latest_user_agents库让它工作的。fake_useragent库有时会返回旧的用户代理。这就是为什么它会显示旧的布局。
安装latest_user_agents library
:https://pypi.org/project/latest-user-agents/
发布于 2021-04-21 04:33:32
嘿,不要试图通过自动化工具来自动化谷歌和谷歌产品,因为每天谷歌都在改变他们页面的网页和视图。
出于多种原因,不推荐使用WebDriver登录Gmail和Facebook等网站。除了违反这些网站的使用条款(您可能会面临帐户被关闭的风险)之外,它还很慢且不可靠。
理想的做法是使用电子邮件提供商提供的API,或者在Facebook的情况下使用开发人员工具服务,该服务公开用于创建测试帐户、朋友等的API。尽管使用API看起来像是一项额外的工作,但您将在速度、可靠性和稳定性方面得到回报。API也不太可能改变,而网页和HTML定位器经常改变,需要你更新你的测试框架。
在测试的任何时候使用WebDriver登录到第三方站点都会增加测试失败的风险,因为这会使测试变得更长。一个普遍的经验法则是,更长的测试更脆弱和不可靠。
符合W3C的WebDriver实现还会用WebDriver属性注释navigator对象,以便减轻拒绝服务攻击。
https://stackoverflow.com/questions/67167402
复制相似问题