当前位置: 首页 > 后端技术 > Python

高可用免费代理ip爬取实践

时间:2023-03-26 15:59:24 Python

我们在使用爬虫的时候,都会对代理ip有一定的需求。今天爬的免费代理网站不是大家爬过的喜慈、66等代理网站。无意中发现的~这个网站还是有点意思的。有没有发现这里的ip地址换成了一张图片,这张图片看起来和验证码很像。定位到ip地址元素,发现确实是一张图片,而且是base64编码的形式。这样,我们就有了一个整体的思路。首先爬取网页上图片的base64编码,将编码解码保存为一张图片,然后用OCR识别,提取图片中的ip。在网页上抓取这些元素是非常容易的。翻页由page参数控制。其他内容如端口号、匿名等代理信息可以通过xpath等方式解析网页获取。我们得到图片的base64后,需要解码编码,保存为图片。defip_img(img_base64,i):img_data=base64.b64decode(img_base64)withopen('ip/{}.jpg'.format(i),'wb')asf:f.write(img_data)我们将进行OCR识别这些ip地址的图片统一保存在ip文件夹中,对每张图片进行OCR识别。执行简单的二值化过程以获得新图像,如下所示。但是使用tesserocr之后,发现这个黑白二值图还是无法识别。我猜是因为图片的大小,所以我用resize把图片的长宽分别扩大了三倍,这样识别出来的效果会不错。向上。defocr_ip(img):image=Image.open(img)image=image.resize((450,60))image=image.convert('L')阈值=127table=[]foriinrange(256):如果我<阈值:table.append(0)else:table.append(1)image=image.point(table,'1')result=tesserocr.image_to_text(image).replace('§','5').replace('$','8').replace('L','1').replace('i','1').replace(',','')返回结果.replace('\n','')上面还是进行了一些小的处理,比如tesserocr会把“5”识别为“§”,“1”识别为“L”等等,所以我用replace来使结果有些内容替换。这样我们就可以获取到这样的免费代理IP,验证合法后就可以使用了~