准备采集某个网站,你精心写了一大堆的代码,等你一运行才发现,原来对方是反爬的,那就非常的难受。
一个简单的脚本,帮你检测某网站是否反爬。
检测原理很简单,分两步
第一步:检测网页响应状态码
使用requests向网页发送请求,如果返回200,说明网站可以正常访问。
如果是403,说明是反爬,禁止爬虫的。其他状态码,则说明网站打不开,或者其他异常,基本上也就爬不了。
第二步:打印获取到的网页内容中的文本内容
虽然有的网页返回了200的状态码,但并不代表网站可以爬取到正常的内容。
比如,有的网站使用的js加载的内容,也可以返回200状态码,但是你获取不到你想要的文本内容,这也没什么用。
具体代码实现:
#coding:utf-8 import requests from bs4 import BeautifulSoup while True: print('----如需终止查询请输入[stop]----') url=input('输入完整url:\n') if url=='stop': break try: r=requests.get(url) if r.status_code!=200: print('爬虫禁止!') else: r.encoding=r.apparent_encoding data=BeautifulSoup(r.text,'html.parser') print(data.get_text()) except Exception as e: print(e)
以上代码需要安装requests以及bs4两个依赖包。
直接打印出来‘爬虫禁止’的,就是反爬的,有文本打印出来的,你需要检测一下打印出来的文本内容有没有你想要的内容才算最终确定是否反爬。
另外,你还可以加入一些headers、cookies等文件,使代码判定更准确。
标签: