Python爬虫之从网站图片中抓取文字

  本程序采用selenium和phantomjs爬取亚马逊图书详情页面,并且使用Tesseract OCR识别图书大图上的文字。
  程序模拟了我们在浏览器上的操作过程。点击下方会触发页面的js弹出模态框,此时页面的dom会增加,然后点击模态框右边的图片可以进行切换,模态框上左边的图片会跟着进行变换。通过获取模态框左边的图片然后用OCR技术识别图片上的文字。
Python爬虫之从网站图片中抓取文字_第1张图片

Python爬虫之从网站图片中抓取文字_第2张图片

实现代码如下:

import time
from urllib.request import urlretrieve
import subprocess
from selenium import webdriver

driver = webdriver.PhantomJS('./phantomjs')

# 加载页面
driver.get("https://www.amazon.cn/War-Peace-Leo-Nijolayevich-Tolstoy/dp/1427030200")
# 等待页面加载完毕
time.sleep(2)

# 点击
driver.find_element_by_id("imgThumbs").click()
imageList = set()
# 等待点击后弹出模态框
time.sleep(2)
for i in range(0, 2):
    driver.find_element_by_id("ig-thumb-" + str(i)).click()
    time.sleep(1)
    image = driver.find_element_by_id("igImage").get_attribute("src")
    imageList.add(image)

driver.quit()

# 打印找到的图片
print(imageList)

# 
for image in sorted(imageList):
    urlretrieve(image, "page.jpg")
    p = subprocess.Popen(["tesseract", "page.jpg", "page"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    p.wait()
    f = open("page.txt", "r")
    print(f.read())

程序输出结果如下:

(wwmwlvrvm

o a,
Wham mag

Way and Peace

m, Nmuymh mm
Wm is m m

虽然识别的不太准确,但是机器很容易识别的识别到了

你可能感兴趣的:(python,爬虫,机器学习,OCR)