- 查找tesseract训练的相关资料,尝试训练tesseract
- 尝试使用selenium爬取京东上某商品的价格与名称
笔记
动态网页爬虫
- Ajax和动态HTML
- Ajax(Asynchronous JavaScript and XML)
- 经过JS渲染的网页直接去分析后台请求是狠复杂的,在Python中可以利用PhantomJS和Selenium这两个库帮助完成JS解析。
- PhantomJS
- PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。
- 嗯,就是一个没有界面的浏览器。它会把网页加载的内容储存到内存上。
- 下载地址:PhantomJS官网
- 安装:超简单,解压缩就好。Windows添加一下环境变量。
- 打开cmd,执行
phantomjs -v
,出现版本号,就说明安装成功了。 - 执行
phantomjs
,进入Phantom环境。可以根据官方文档进行操作了。
- Selenium
自动化测试工具。它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里面安装一个Selenium的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。
-
安装:pip下载安装,或官网下载安装。
C:\Users\yishikeji-05>pip install selenium Collecting selenium Downloading selenium-3.0.2-py2.py3-none-any.whl (915kB) 100% |████████████████████████████████| 921kB 439kB/s Installing collected packages: selenium Successfully installed selenium-3.0.2
【这部分笔记参考了静觅这个博客,有一系列关于Python爬虫的文章,值得一看】
文字图像识别:验证码
- ORC——将图像翻译成文字,光学文字识别(Optical Character Recognition)
- ORC库
- Pillow——图像库(已经有了)
- Teseract——文字识别,GitHub资源
- Teseract安装
- Mac OS:
brew install tesseract
- windows: 下载exe的安装文件。我安装在了
D:\Program Files\Tesseract-OCR
- Mac OS:
Tesseract的使用
-
保存一张图片到Tesseract的安装路径下,扩展名改为
tif
。 -
进入cmd命令窗,
cd D:\Program Files\Tesseract-OCR
进入安装目录,执行命令:>tesseract pic.tif textoutput Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
-
然后在安装目录下就出现了
textoutput.txt
的文件。txt文件内容:
This is some text, written in Arial, that will be read by Tesseract. Here are some symbols: !@#$%"&'()
作业
1. 尝试训练tesseract
- 训练tesseract的GitHub文档
训练步骤:
下载并安装jTessBoxEditor工具。
准备一张用来训练的tiff格式图片。
将10张图片合并为一张tiff格式的图片
orderNo.tif
。-
Make Box Files:打开命令行,进入安装目录,执行以下代码。
tesseract orderNo.tif orderNo batch.nochop makebox
使用jTessBoxEditor打开orderNo.tif文件,需要记住的是第2步生成的orderNo.box要和这个orderNo.tif文件同在一个目录下。逐个校正文字,后保存。
-
Run Tesseract for Training:执行如下命令
tesseract orderNo.tif orderNo nobatch box.train
-
Compute the Character Set:执行如下命令
unicharset_extractor orderNo.box
-
新建字体文件“font_properties”,执行命令
mftraining.exe -F font_properties -U unicharset orderNo.tr
-
Clustering
cntraining orderNo.tr
此时,在目录下应该生成若干个文件了(
并没有),把unicharset,inttemp,normproto,pffmtable这四个文件加上前缀“orderNo.”。然后输入命令:
combine_tessdata orderNo.
以上是老师给的资料中的训练步骤,然而我尝试之后并没有成功。GitHub文档所介绍的像是用Linux系统做的,究竟也没有搞明白。
2. 使用selenium爬取京东上某商品的价格与名称
代码部分:
from selenium import webdriver
import time
driver = webdriver.PhantomJS()
driver.get("http://item.jd.com/3438929.html#")
#driver.page_source
time.sleep(1)
price = driver.find_element_by_class_name("p-price").text
print('商品名称:', driver.title, '\n', '商品价格:', price)
driver.close()
结果输出:
商品名称: 【JDtabJ01】JDtab 魅族 哈曼 富士康 乐视 京东联袂打造7.9英寸平板电脑 2K视网膜屏 4GB+64GB 香槟金 J01 【行情 报 价 价格 评测】-京东
商品价格: ¥1499.00
做的很勉强,用selenium提取信息不太熟练,总是出现InvalidSelectorException
这个错误。