python學習筆記-爬蟲02

#======================動態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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章