【问题标题】:Google returning different layouts for pagination谷歌返回不同的分页布局
【发布时间】:2021-07-13 23:15:58
【问题描述】:

我正在使用 selenium 和 chrome 在 google 上进行搜索。但它正在返回不同的分页布局。我正在使用 fake_useragent 库使用不同的代理和不同的用户代理。

我只想要第二个图像布局。有谁知道我每次都能得到它吗?

First Image

Second Image

【问题讨论】:

  • 我认为第一个出现在禁用 javascript 时。查看this answer here on how to disable javascript
  • @Parzival 对不起,我写错了。我只想要第二个图像布局。
  • 禁用 javascript 确实会给出第一个图像布局。
  • 啊,那你需要完全相反的。你在硒中使用铬吗?

标签: python selenium selenium-webdriver web-scraping beautifulsoup


【解决方案1】:

问题是 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)

【讨论】:

    【解决方案2】:

    这两种布局的区别在于,当您禁用 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/

    【讨论】:

    • 我启用了 javascript,但有时它仍然会给出第一个布局。
    • @Parzial 感谢您的宝贵时间。我通过使用 latest_user_agents 库 (pypi.org/project/latest-user-agents) 让它工作。 fake_useragent 库有时会返回旧的用户代理。这就是它显示旧布局的原因。
    • @user8511791 啊,我明白了。我很高兴你明白了!我会将您的评论添加到答案中,这样它也可能对未来的用户有所帮助。
    【解决方案3】:

    嘿,不要试图通过自动化工具来自动化谷歌和谷歌产品,因为谷歌每天都在改变网页元素和页面视图。

    出于多种原因,不建议使用 WebDriver 登录 Gmail 和 Facebook 等网站。除了违反这些网站的使用条款(您的帐户可能会被关闭)之外,它速度慢且不可靠。

    理想的做法是使用电子邮件提供商提供的 API,或者在 Facebook 的情况下使用开发人员工具服务,该服务公开了用于创建测试帐户、朋友等的 API。尽管使用 API 可能看起来有点额外的艰苦工作,但您将在速度、可靠性和稳定性方面得到回报。 API 也不太可能更改,而网页和 HTML 定位器经常更改,需要您更新测试框架。

    在测试的任何时候使用 WebDriver 登录第三方网站都会增加测试失败的风险,因为它会延长测试时间。一般的经验法则是,较长的测试更加脆弱和不可靠。

    符合 W3C 的 WebDriver 实现还使用 WebDriver 属性注释导航器对象,以便可以缓解拒绝服务攻击。

    【讨论】:

      猜你喜欢
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      相关资源
      最近更新 更多