【问题标题】:Trying to Scrape Manta but getting nothing试图刮掉蝠鲼却一无所获
【发布时间】:2017-01-04 19:33:00
【问题描述】:

我知道这是一个标头问题,因为如果我从代码中取出标头,那么 html 会吐出我是机器人,但即使添加标头,我也无法弄清楚如何解决此问题。你能给出什么建议?

import requests
from bs4 import BeautifulSoup


#Get the different pages to begin scraping data from
url = "http://www.manta.com/mb_41_ALL_19/louisiana"
headers = {    'Origin':'http://www.manta.com',
        'Referer':'http://www.manta.com/mb_41_ALL_19/louisiana',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
        , 'Accept-Language':'en-US,en;q=0.8'
        ,'Content-Type':'text/html; charset=utf-8', 'Host':None,}
newurl = requests.get(url, headers=headers)
soup = BeautifulSoup(newurl.text, "html.parser")
print(soup)

【问题讨论】:

  • 他们的 CDN 正在使用浏览器指纹来阻止机器人。它可以通过请求来完成,但这意味着对一些 javascript 进行逆向工程。

标签: python beautifulsoup python-requests


【解决方案1】:

坏消息,看看你在body得到了什么:

<div id="distil_ident_block"></div>

distil 是“Distil Networks”反网络抓取服务的标志。他们有他们的理由。引用自"Terms of Service"

我们授予您访问和使用 Manta 的有限权利。 你不是 授权访问 Manta 或其计算机、服务器和数据库以 抓取或“挖掘”我们的数据。

从技术上讲,你可以挑战 Distil,但在法律上你不应该。

【讨论】:

  • 太糟糕了!哦,继续下一个项目:)谢谢
  • @Kamikaze_goldfish 他们也有检测硒的方法 (stackoverflow.com/questions/33225947/…) - 它显然可以解决,但他们会给你带来更多挑战。无论如何,在这种情况下,网络抓取将是非法的。我想说你最好的选择是明确的 - 联系 manta.com 的所有者/维护者并寻求更好的方法来获取数据,保持法律方面的事情。
猜你喜欢
  • 1970-01-01
  • 2018-12-01
  • 2019-12-15
  • 2019-11-18
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多