《七天爬虫进阶系列》 - 04 爬虫进阶之 反爬虫机制

1. IP地址验证

有些网站会使用IP地址验证进行发爬虫处理,程序会检查客户端的IP地址,如果发现同一个IP地址频繁请求,就会判断该客户端是爬虫程序。

应对方法:使用IP代理池,遇到异常后,更换IP继续请求

2. 禁用cookie

有些网站可以通过跟踪Cookie来识别是否是同一个客户端,如果同一个客户端单位时间内请求频繁,则会判断客户端是爬虫程序。

应对方法:不需要登录时,禁用cookie

3. 违反爬虫规则文件

在很多web站点下都会提供一个robots.txt文件,在该文件中指定了一些列的爬虫规则,例如:

该规则只接受baidu的网络爬虫,不接受其他爬虫程序。

应对方法:指定爬虫不遵守爬虫规则

4. 限制访问频率

当同一个IP、同一客户端访问目标网站过于频繁时,就可能被认定为机器程序。

应对方法:为了更好的模拟正常用户的访问速度,可以限制爬虫的访问频率,或者整合selenium模拟浏览器行为

5. 图形验证码

阻碍我们爬虫的。有时候正是在登录或者请求一些数据时候的图形验证码。

应对方法:我们需要将图片翻译成文字,一般被成为光学文字识别(Optical Character Recognition),简写为OCR。

Tesseract:

Tesseract是一个OCR库,目前由谷歌赞助。Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,他可以通过训练识别任何字体。

安装:

brew install tesseract

设置环境变量:

安装完成后,如果想要在命令行中使用Tesseract,那么应该设置环境变量。MacLinux在安装的时候就默认已经设置好了。

还有一个环境变量需要设置的是,要把训练的数据文件路径也放到环境变量中。在环境变量中,添加

`TESSDATA_PREFIX=C:\path_to_tesseractdata\teseractdata`。

在命令行中使用tesseract识别图像:

使用命令:tesseract 图片路径 文件路径

tesseract a.png a

那么就会识别出a.png中的图片,并且把文字写入到a.txt中。如果不想写入文件直接想显示在终端,那么不要加文件名就可以了。

在代码中使用tesseract识别图像:

Python代码中操作tesseract,需要安装pytesseract库。

pip install pytesseract

并且,需要读取图片,需要借助一个第三方库叫做PIL。通过pip list看下是否安装。如果没有安装,通过pip的方式安装:

pip install PIL

使用pytesseract将图片上的文字转换为文本文字的示例代码如下:

# 导入pytesseract库
import pytesseract
# 导入Image库
from PIL import Image

# 指定tesseract.exe所在的路径
pytesseract.pytesseract.tesseract_cmd = r'D:\ProgramApp\TesseractOCR\tesseract.exe'

# 打开图片
image = Image.open("a.png")
# 调用image_to_string将图片转换为文字
text = pytesseract.image_to_string(image)
print(text)

pytesseract处理拉勾网图形验证码:

import pytesseract
from urllib import request
from PIL import Image
import time

pytesseract.pytesseract.tesseract_cmd = r"D:\ProgramApp\TesseractOCR\tesseract.exe"

while True:
    captchaUrl = "https://passport.lagou.com/vcode/create?from=register&refresh=1513081451891"
    request.urlretrieve(captchaUrl,'captcha.png')
    image = Image.open('captcha.png')
    text = pytesseract.image_to_string(image,lang='eng')
    print(text)
    time.sleep(2)

参考:https://zhuanlan.zhihu.com/p/54627024
https://www.cnblogs.com/paisenpython/p/10303509.html

你可能感兴趣的:(《七天爬虫进阶系列》 - 04 爬虫进阶之 反爬虫机制)