作业笔记11_selenium

  1. 查找tesseract训练的相关资料,尝试训练tesseract
  2. 尝试使用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

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的文件。

    作业笔记11_selenium_第1张图片

    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这个错误。

你可能感兴趣的:(作业笔记11_selenium)