您的位置:首页 > 编程语言 > Python开发

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

2017-12-08 15:55 801 查看
  本程序采用selenium和phantomjs爬取亚马逊图书详情页面,并且使用Tesseract OCR识别图书大图上的文字。

  程序模拟了我们在浏览器上的操作过程。点击下方会触发页面的js弹出模态框,此时页面的dom会增加,然后点击模态框右边的图片可以进行切换,模态框上左边的图片会跟着进行变换。通过获取模态框左边的图片然后用OCR技术识别图片上的文字。





实现代码如下:

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

虽然识别的不太准确,但是机器很容易识别的识别到了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息