#======================動態HTML====================
# JavaScrapt
# jQuery
# Ajax
# DHTML
# Python採集動態數據
# 從Javascript代碼入手採集
# 不推薦:Python第三方庫運行JavaScript,直接採集你在瀏覽器看到的頁面
##=====================Selenium + PhantomJS===================
# Selenium: web自動化測試工具
# 自動加載頁面
# 獲取數據
# 截屏
# 安裝: pip install selenium==2.48.0
# 官網: http://selenium-python.readthedocs.io/index.html
# PhantomJS(幽靈),基本已被chrome替代
# 基於Webkit 的無界面的瀏覽器
# 官網: http://phantomjs.org/download.html
# Selenium 庫有有一個WebDriver的API
# WebDriver可以跟頁面上的元素進行各種交互,用它可以來進行爬取
'''
通過webdriver操作PhantomJS進行查找
'''
from selenium import webdriver
import time
# 通過Keys模擬鍵盤
from selenium.webdriver.common.keys import Keys
# 操作哪個瀏覽器就對哪個瀏覽器建一個實例
# 自動按照環境變量查找相應的瀏覽器
driver = webdriver.PhantomJS()
# 如果瀏覽器沒有在相應環境變量中,需要指定瀏覽器位置
driver.get("http://www.baidu.com")
# 一般根據網絡速度等待若干秒
time.sleep(5)
# 通過函數查找title標籤
print("Title: {0}".format(driver.title))
#=====================chrome + chromedriver=====================
# 下載安裝chrome: 下載+安裝
# 下載安裝chromedriver:
# Selenium操作主要分兩大類:
# 得到UI元素
# find_element_by_id
# find_elements_by_name
# find_elements_by_xpath
# find_elements_by_link_text
# find_elements_by_partial_link_text
# find_elements_by_tag_name
# find_elements_by_class_name
# find_elements_by_css_selector
# 基於UI元素操作的模擬
# 單擊
# 右鍵
# 拖拽
# 輸入
# 可以通過導入ActionsChains類來做到
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
# 可能需要手動添加路徑
driver = webdriver.Chrome()
url = "http://www.baidu.com"
driver.get(url)
text = driver.find_element_by_id('wrapper').text
print(driver.title)
# 得到頁面的快照
driver.save_screenshot('index.png')
# id="kw" 的是百度的輸入框,我們得到輸入框的ui元素後直接輸入“大熊貓"
driver.find_element_by_id('kw').send_keys(u"大熊貓")
# id="su"是百度搜索的按鈕,click模擬點擊
driver.find_element_by_id('su').click()
time.sleep(5)
driver.save_screenshot("daxiongmao.png")
#獲取當前頁面的cookie
print(driver.get_cookies())
# 模擬輸入兩個按鍵 ctrl+ a
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
#ctr+x 是剪切快捷鍵
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'x')
driver.find_element_by_id('kw').send_keys(u'航空母艦')
driver.save_screenshot('hangmu.png')
driver.find_element_by_id('su').send_keys(Keys.RETURN)
time.sleep(5)
driver.save_screenshot('hangmu2.png')
# 清空輸入框 , clear
driver.find_element_by_id('kw').clear()
driver.save_screenshot('clear.png')
# 關閉瀏覽器
driver.quit()
##========================驗證碼=============================
# 驗證碼:防止機器人或者爬蟲
# 分類:
# 簡單圖片,
# 極驗,官網:www.geetest.com
# 圖片選擇,12306
# 電話
# google驗證
# 驗證碼破解:
# 通用方法:
# 下載網頁和驗證碼
# 手動輸入驗證號碼
# 簡單圖片
# 使用圖像識別軟件或者文件識別軟件
# 可以使用第三方圖像驗證碼破解網站,www.chaojiying.com
# 極驗,官網:www.geetest.com
# 破解比較麻煩
# 可以模擬鼠標等移動
# 一直在進化,機器學習
# 圖片選擇,12306
# 電話:語音識別,降噪,人工智能
# google驗證
# Tesseract
# 機器視覺領域的基礎軟件
# OCR:OpticalChracterRecognition,光學文字識別
# Tesseract:一個ocr庫,google贊助
# 安裝:
# windows
# Mac: brew install tesseract
# Linux: apt-get install tesseract-ocr
# 安裝完成後需要設置環境變量
tesseract xxx.jpg xx.txt
# python使用,安裝完成後還需要pytesseract
# pip install pytesseract
# 識別圖片案例
import pytesseract as pt
from PIL import Image
image = Image.open("xxx.jpg")
#調用tesseract,把圖片轉化成文字
text = pt.image_to_string(image)