【问题标题】:Can Scrapy be used with the Chrome Browser?Scrapy 可以与 Chrome 浏览器一起使用吗?
【发布时间】:2016-07-08 19:29:27
【问题描述】:

我需要抓取一个由 javascript 渲染的 AngularJS 应用程序的网页。该网站的开发人员在隐私浏览模式下检测到 Safari/Firefox 并禁止其使用,因此被删除。当您不处于私人模式时,该页面可与 Safari/Firefox 一起使用。

有趣的是,无论是否在隐私模式下使用 Chrome,都不会给出这样的警告。我使用的是 Scrapy+Selenium,但我真的希望在这个项目中使用 ScrapyJS/Splash。但是,看起来 Scrapy/Splash 组合受到了网站隐私浏览墙的影响。

是否可以告诉 Scrapy 使用 Chrome?我知道 Selenium 有很多驱动程序,并且关于如何使用每个驱动程序都有很好的记录,但是我找不到任何关于 Scrapy 是否支持其他浏览器或者其他人是否已经这样做的信息。 Google/SO 搜索对我来说也完全没有说明这一点。

【问题讨论】:

  • 您是否尝试过更改用户代理? stackoverflow.com/questions/18920930/…
  • 是的,我在 Scrapy settings.py 文件中试过这个,它似乎没有效果。我尝试了一些已知的 Chrome/Firefox/Safari 代理以及一些“Scrapy 做一个好公民”的用户代理。
  • 你试过使用 selenium 的 chrome driver 吗?
  • 对不起,如果我错了,但根据我一年多前对 Scrapy 的有限经验,据我所知,与 Selenium 不同,它并没有真正使用任何浏览器的后端。它只是使用 requests/twisted 发送 HTTP 请求,因此“使用带有 Scrapy 的浏览器 X”的想法似乎没有多大意义。我想你最好的办法是尝试 Selenium。
  • @Randy,从 Splash 2.0 开始,您可以在启动或运行时禁用私有模式。请参阅splash.readthedocs.org/en/stable/changes.html#id4 “现在可以在启动时使用命令行选项或在运行时使用 splash.private_mode_enabled 属性关闭私有模式;”

标签: python google-chrome selenium scrapy


【解决方案1】:

Starting from Splash 2.0,您可以禁用私人模式(默认为“开启”)。

有两种方法:

  • 在启动时,使用 --disable-private-mode 参数,例如,如果您使用的是 Docker:

    $ sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash --disable-private-mode
    
  • 在运行时使用/execute 端点并设置splash.private_mode_enabled=false

另外,请注意禁用私人模式的效果:

请注意,如果您禁用隐私模式,浏览数据(例如 cookie 或保存在本地存储中的项目)可能会在请求之间持续存在。

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多