如何以编程方式检测网站是否禁止屏幕抓取?

时间:2015-07-03 05:10:54

标签: python beautifulsoup screen-scraping

我写了一个小程序,找到网页上的所有链接并将它们转储到列表中,然后遍历该列表,打开每个链接并收集这些页面上的所有链接。它确实深入n层。

我正在使用美丽的汤来筛选。我遇到的一个问题是某些页面不允许屏幕抓取并使程序崩溃。我写了一段代码,通过查找页面的标题标签是否显示“拒绝访问”来检测网站是否不允许抓取。使用此功能的网站使用CloudFare阻止屏幕抓取。

>     links = []
>     for link in links:
>             if not nltk.clean_html(str(connect_to_webpage(link).find_all('title')))[2:15]
> == 'Access denied': #check link title tag to see if site says 'Access Denied'
>                 links.append(link)

显然不是每个人都使用Cloud Fare,因此有些情况下它没有捕获并且程序崩溃。是否有一个我可以添加的通用条件,它将捕获屏幕刮板阻塞的所有实例?最好的方法是什么?感谢。

1 个答案:

答案 0 :(得分:-1)

尝试更改您的用户代理

req = urllib.request.Request(url, None,headers={'User-Agent' : 'Mozilla/5.0'})