【问题标题】:Web page scraping detection网页抓取检测
【发布时间】:2020-04-05 15:53:39
【问题描述】:

我正在进行一个数据科学项目,我需要从网站上抓取一些数据。 不幸的是,到目前为止我尝试过的所有方法都因被网页检测到而失败:

  1. 使用随机代理或伪造谷歌机器人的请求
  2. 带有我的网络浏览器标头的请求
  3. 爬虫 API
  4. 在后续抓取之间使用较长的等待时间

来自目标网页的机器人是: 用户代理:Mediapartners-Google 不允许: 用户代理: * 禁止:/搜索 禁止:/automoto/search 禁止:/property/search 禁止:/static_html/promo/esales/phones/ 禁止:/my/services 用户代理:Twitterbot 禁止:

我试图以某种方式设置 puppeteer,但我无法弄清楚..

我觉得奇怪的是,没有一种方法可以模拟手动代码检查,因此无法在不被识别为机器人的情况下提取信息!

你有什么建议吗?获取这些数据对于交付项目是绝对必要的。我不需要上述网络自动化工具提供的速度。

【问题讨论】:

  • 这听起来像那个网站的管理员不想你刮它。这可能在他们的 EULA 或类似内容中。尊重他们的意愿。

标签: python web-scraping dataset data-science


【解决方案1】:

我遇到了抓取网站和被抓的复杂情况,尤其是 Facebook(如果你想看到我使用 selenium 的偷偷摸摸的实现,请参阅 this。我不容忍违反网站的使用条款,我不承担任何责任对于您违反 ToS 的行为...但是

如果您在自动抓取时遇到困难,请考虑通过任意等待调用来跟踪您的抓取调用。这是一个例子:

import time

min_allowable_time, max_allowable_time = (1, 7)  # this is in seconds.

for x in range(0, 100):
  your_scraping_function()
  time.sleep(random.uniform(min_allowable_time, max_allowable_time))
  your_next_page_function()

变量等待时间是这里的关键。您还可以实现此抓取工具以根据一天中的给定时间运行,例如,仅在 08:00 到 22:00 之间运行。

附言我发现抓取移动网站要容易得多,即www.m.facebook.com

【讨论】:

    【解决方案2】:

    试试这个(必须包括木偶)

    const puppeteer = require('puppeteer-extra');
    const StealthPlugin = require('puppeteer-extra-plugin-stealth');
    puppeteer.use(StealthPlugin());
    

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 2020-06-18
      • 2021-04-17
      • 2022-12-19
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多