我编写了一个小程序,可以找到网页上的所有链接并将它们转储到一个列表中,然后遍历该列表,打开每个链接并收集这些页面上的所有链接。它深入 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'})
