ip在线代理网页联合早报_一次免费代理ip的爬取实战
我們在使用爬蟲的時候,會對代理ip有一定程度的需求。今天爬取的這個免費代理網站不是大家已經爬爛的西刺和66等代理網站,是我無意間發現的寶藏網站~
這個網站還是有一點小意思的。
注意到沒有,這里的ip地址被換成了圖片,而這個圖片長得似乎和驗證碼非常相似。定位ip地址元素發現,確實是圖片,并且是base64編碼的形式。
這樣我們就有了整體的思路,首先爬取網頁上圖片的base64編碼,將編碼解碼保存為圖片,接著利用OCR進行識別,將圖片中的ip提取。
爬取網頁
網頁上的這些元素爬取還是非常容易的,通過page參數控制翻頁,其他內容例如端口號,匿名度等代理的信息可以利用xpath或者其他方式來解析網頁得到。
當我們得到圖片的base64之后,需要將編碼解碼并保存為圖片。
def ip_img(img_base64,i):img_data=base64.b64decode(img_base64)
with open ('ip/{}.jpg'.format(i),'wb') as f:
f.write(img_data)
OCR識別
我們將這些ip地址的圖片統一保存在ip文件夾內,來對每一張圖片進行OCR識別,識別的套路很簡單,和知網的驗證碼的方式相同,我們先把圖片轉換為灰度圖片,再進行簡單的二值化處理,得到新圖片效果如下所示。
但是使用tesserocr之后發現,這個黑白的二值圖片依然不能識別,我猜想是因為圖片大小的問題,于是我利用resize將圖片的長寬均增至三倍,這樣識別得到的結果便有模有樣了。
def ocr_ip(img):image=Image.open(img)
image=image.resize((450,60))
image=image.convert('L')
threshold=127
table=[]
for i in range(256):
if i 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(',','')
return result.replace('\n','')
上面還是進行了一些小小的處理,例如tesserocr會把“5”識別為“§”,把“1”識別為“L”等等,因此我使用replace做了結果的部分內容替換。
這樣,我們就可以獲取這樣一些免費的代理IP,再驗證有效性之后便可投入使用啦~
——END——
推薦閱讀
用Python來擲個色子~
用Python獲取可能是全網最全的杰尼龜表情包(第三彈)
總結
以上是生活随笔為你收集整理的ip在线代理网页联合早报_一次免费代理ip的爬取实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arcengine遍历属性表_Redis
- 下一篇: echo 多行_Java中Scanner