1
wuhuaji 2016-06-16 21:18:18 +08:00
python 是有图像处理模块( pil ),当时我用 Python 写爬虫的时候,就想用这个处理模块识别验证码,但是发现识别率非常低,大概正确率在 10%。
我看了一下,你要的识别的图片,毫无疑问会更低,而且中文不知道能识别吗? 我觉得,想要识别图像,还具有非常强的图像处理的知识才能搞定。如果只是调用几个库函数,结果几乎不可用。 |
2
WinterWu 2016-06-16 21:22:41 +08:00
这个和爬虫没关系吧。找个 OCR 模块来提取文字吧。没做过这个,随手搜到个链接 https://realpython.com/blog/python/setting-up-a-simple-ocr-server/
你找找看, python OCR 好像都是对 Tesseract-OCR 的封装 |
3
buptlishantao OP |
4
bdbai 2016-06-16 21:46:16 +08:00 via Android
@buptlishantao 我来猜一下,它的邮件、电话是异步获取后用 js 呈现的。
|
5
ss098 2016-06-16 21:50:12 +08:00
源码里确实是有这张图片的链接的,经过测试,需要添加 Referer 头后可以正常访问。
|
6
Amayadream 2016-06-16 21:56:40 +08:00
直接在 html 里就有,<img align="absmddle" src="xxxxxx">,匹配一下就行了,至于怎么识别图片我就不了解了
|
7
buptlishantao OP |
8
icedx 2016-06-16 22:04:57 +08:00
稍微切一下图就可以 OCR 思路给你了
还是不会的话可以提供有偿服务哦 |
9
WinterWu 2016-06-16 22:05:55 +08:00
@buptlishantao 源码里有链接里有,仔细看一下。如果你直接打开找那个大图是没有的,但是:
1. 下面有 3 个小图片就是,第一个就是 <div><img src="http://img.china.globalhardwares.com/products/201107/29/f7397aba-c306-46d8-8253-0beabfd95ae8.jpg" width="60" height="60" onmouseover="if(this.src.indexOf('nopic60.gif')==-1)Album(0, 'http://img.china.globalhardwares.com/products/201107/29/f7397aba-c306-46d8-8253-0beabfd95ae8.jpg');" 2. 后面还有两个没图片,但是也是无图片的地址,自己做个判断处理就好了。 |
10
practicer 2016-06-16 22:11:00 +08:00 via Android
补充下前面网友提到的 tesseract ,可以将清晰的易识别的文字图片转成字符串,成功率取决于清晰度,如果清晰度不够,要用到 pillow 库处理图片, pillow 等于 python 的 photoshop 。回到 tesseract ,是命令行工具,所以不能用 pip 安装,下载安装压缩包后添加根目录到环境变量即可使用,添加到
|
11
Amayadream 2016-06-16 22:13:45 +08:00
@buptlishantao 在请求的时候 headers 里加上 Referer 就能请求到了
import requests url = 'http://china.globalhardwares.com/extend/image.php?auth=En1EdidbTywNNWheCC5WZzNVNgVFdgI2bFJFe3hL' headers = {"Referer":"http://china.globalhardwares.com/"} r = requests.get(url, headers=headers, stream=True) with open("d:/1.png", 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: f.write(chunk) f.flush() f.close() |
12
jugelizi 2016-06-16 22:32:46 +08:00
说真的
这个已经很好识别了 |
13
practicer 2016-06-17 09:04:22 +08:00
@Amayadream 在这个基础上写到获取所有联系信息,并且下载图片到本地,然后通过 tesseract 转图为字符串,附代码:
https://github.com/nicky2015/practier/blob/master/spider/getContact.py 我的环境是: python2.7 + windows : 这是结果: 瑞安市主峰标准件制造有限公司[已核实] 通过认证[诚信档案] 联系人黄德海(先生) 会员 [当前离线] [加为商友] [发送信件] 邮件 电话 手机 地区浙江-温州市-瑞安市 地址浙江省瑞安市塘下镇下林工业区罗山大道 5 号 ---------- Image downloads here: D:\emailPic.png Image downloads here: D:\cellPic.png Image downloads here: D:\phonePic.png Starting retrieve text from images with tesseract... image emailPic.png convertes to text: [email protected] image phonePic.png convertes to text: 36 — 577 — 6536563o image cellPic.png convertes to text: 13806850329 要安装一个外部程序 tesseract 和 python 的接口包 pytesseract 1.windows 平台下载地址 https://sourceforge.net/projects/tesseract-ocr-alt/ 2.包安装: pip install pytesseract |
14
slysly759 2016-06-17 12:41:26 +08:00
刚刚楼上给的解决方案不错
下面我来说一下我的思路: 1.绕过 image.php 的图片生成 采用 selenium+driver 的方式直接在固定位置截屏然后 PIL 直接识别 2.获取到文中的图片链接修改 user-agent 获取图片 我初步看了一下,这个图片是由 image.php 生成 获取?auth=后面参数输出图片,你把原来的请求头复制一下就可以得到 respose 为图片的结果,最后 PIL 导出,十分简单。 |