1. 程式人生 > >第十一章 從網站圖片中抓取文字

第十一章 從網站圖片中抓取文字

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#這一節是數144頁從網站圖片抓取文字的程式碼,
#需要安裝tesseract,它是開源的可以通過訓練識別出字型的庫
import time
from urllib.request import urlretrieve

from selenium import webdriver
#建立新的selenium drive

driver=webdriver.phantomjs(executable_path='D:/pycharm/phantomjs-2.1.1-windows/bin/phantomjs')
#用selenium試試firefox瀏覽器,執行有問題則刪除下面這行程式碼
driver=webdriver.Firefox()

driver.get("http://www.amazon.com/War-Peace-Leo-Nikolayevich-Tolstoy/dp/1427030200")
time.sleep(2)

#單擊圖書預覽按鈕
driver.find_element_by_id("sitbLogoImg").click()
imageList=set()

#等待頁面載入完成
time.sleep(5)
#當向右箭頭可以點選時,開始翻頁
while "pointer" in driver.find_element_by_id("sitbReaderRightPageTurner").get_attribute("style"):
    driver.find_element_by_id("sitbReaderRightPageTurner").click()
    time.sleep(2)
    #獲取載入的頁面,一次可以載入多個頁面,但是重複的頁面不能載入到集合中
    pages=driver.find_element_by_xpath("//div[@class='pageImage']/div/img")
    for page in pages:
        image=page.get_attribute("src")
        imageList.add(image)
driver.quit()
#用Tesseract處理收集的圖片url的連結
for image in sorted(imageList):
    urlretrieve(image,"page.jpg")
    #系統呼叫tesseract,由於沒有安裝,因此下面這行程式碼有錯就先註釋,在執行中需要安裝加解註釋
    #p=subprocess.Popen(["tesseract","page.jpg","page"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    #p.wait()
    f=open("page.txt","r")
    print(f.read())