网页抓取检测

时间:2020-04-05 15:53:39

标签: python web-scraping dataset data-science

我正处于数据科学项目的中间,我需要从网站上抓取一些数据。 不幸的是,到目前为止,我尝试过的所有方法都无法通过网页检测到:

  1. 使用随机代理或伪造的Google机器人的请求
  2. 带有我的网络浏览器标题的请求
  3. scraper API
  4. 在随后的抓取之间使用大量的等待时间

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

我试图以某种方式设置人偶,但我无法弄清楚。

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

您有什么建议吗?获取这些数据对于交付项目绝对至关重要。我不需要上面所需的Web自动化工具提供的速度。

2 个答案:

答案 0 :(得分:0)

尝试一下(必须包括木偶)

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

答案 1 :(得分:0)

我遇到了抓取网站和被抓到的麻烦,尤其是Facebook(如果您想看到我使用硒的偷偷摸摸的实现,请参阅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。

p.s。我发现抓取移动网站(即www.m.facebook.com

容易得多)