Skip to main content
 首页 » 编程设计

python之如何以编程方式检测站点是否禁止屏幕抓取

2025年05月04日8lexus

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

我正在使用 Beautiful Soup 进行屏幕抓取。我遇到的问题之一是某些页面不允许屏幕抓取并导致程序崩溃。我写了一段代码,通过查找页面的标题标签是否显示“拒绝访问”来检测网站是否不允许抓取。具有此功能的网站使用 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,因此在某些情况下它无法捕获并且程序会崩溃。是否有我可以添加的通用条件来捕获所有屏幕抓取器阻塞实例?最好的方法是什么?谢谢。

请您参考如下方法:

尝试更改您的用户代理,

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