图片伪装反爬虫
目标网站:广西人才网
目标地址:https://www.gxrc.com/jobDetail/c4329efab8424b5d871df247f299543a
爬取要求:爬取联系方式
1.分析网页
发现爬取的联系方式是一张图片,怎么办呢?
2.解决思路
- 2.1 首先拿到
图片URL
- 2.2 请求该URL,
.content
,得到二进制的文本流内容 - 2.3 使用
io.BytesIO
操作处理二进制数据,即io.BytesIO(字节流内容)
- 2.4 用
Image.open
打开图片字节流 得到图片对象 - 2.5 使用
光学字符识别tesseract
识别图片中的字符串
3.代码如下
# -*- coding: UTF-8 -*-
"""
@author:林健
@file:Image_guise.py
@time:2020/11/14
"""
import re
from urllib.parse import urljoin
import pytesseract
import requests
from fake_useragent import UserAgent
from PIL import Image
import io
"""
目标网站:广西人才网
目标地址:https://www.gxrc.com/jobDetail/c4329efab8424b5d871df247f299543a
爬取要求:爬取联系方式
"""
ua = UserAgent()
url = 'https://www.gxrc.com/jobDetail/c4329efab8424b5d871df247f299543a'
headers = {
'User-Agent': ua.random # 设置随机UA
}
response = requests.get(url, headers=headers)
# print(response.text)
# 使用正则获取图片的src
img_src = re.search(r'联系电话:<label><img src="(.*?)" /></label>', response.text)
img_url = urljoin(url, img_src.group(1)) # 拼接路径
images = requests.get(img_url, headers=headers) # 对图片URL进行请求
# images.content: 获取图片的二进制字节流
# io.BytesIO(): 操作处理二进制数据
# Image.open(): 打开图片字节流,得到一个图片对象
images_c = Image.open(io.BytesIO(images.content))
# 配合光学字符识别tesseract识别出图片中的字符串
phone = pytesseract.image_to_string(images_c)
print(f'联系方式: {phone}')
新手上路,代码写的不好,谅解下,如果有理解错误的或者不太明白的地方,欢迎在评论区留言,我们共同进步。
以上就是 图片伪装反爬虫 的所有内容了,点赞收藏加评论是最大的支持哦!
📑编写不易,转载请注明出处,如有侵权,请联系我!