Python请求与robots.txt

Aus*_*tin 4 python robots.txt beautifulsoup python-requests

我有一个供个人使用的脚本,它会刮掉一些网站以获取信息,直到最近它工作得很好,但似乎其中一个网站增加了它的安全性,我再也无法访问其内容了.

我正在使用带有请求的python和BeautifulSoup来抓取数据,但是当我尝试使用请求获取网站的内容时,我会遇到以下情况:

'<html><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"></head><iframe src="/_Incapsula_Resource?CWUDNSAI=9_4E402615&incident_id=133000790078576866-343390778581910775&edet=12&cinfo=4bb304cac75381e904000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 133000790078576866-343390778581910775</iframe></html>'

我做了一些研究,看起来这就是阻止我:http://www.robotstxt.org/meta.html

有什么方法可以说服网站我不是恶意机器人吗?这是一个我每天运行一次的脚本,只需要一点点来源,所以无论如何我都不是他们服务器的负担.只是有人用脚本让事情变得更容易:)

编辑:尝试切换到机械化并忽略robots.txt那样,但我没有得到403 Forbidden响应.我想他们已经改变了他们对刮擦的立场,还没有更新他们的TOS.是时候去B计划,不再使用网站,除非有人有任何其他想法.

Wal*_*lly 8

最可能发生的是服务器检查user-agent并拒绝访问user-agent机器人使用的默认值.

例如requests设置user-agent类似的东西python-requests/2.9.1

您可以指定自己的标题.

url = "https://google.com"
UAS = ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1", 
       "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0",
       "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0",
       "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
       "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36",
       "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36",
       )

ua = UAS[random.randrange(len(UAS))]

headers = {'user-agent': ua}
r = requests.get(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)