3-Python爬蟲-動態HTML/Selenium+PhantomJS/chrome無頭瀏覽器-chromedriver
動態HTML
爬蟲跟反爬蟲
動態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(幽靈)
- 基於Webkit 的無介面的瀏覽器
- 官網: http://phantomjs.org/download.html
- Selenium 庫有有一個WebDriver的API
- WebDriver可以跟頁面上的元素進行各種互動,用它可以來進行爬取
- 案例 v36
- 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類來做到
案例37
案例v36
```
'''
通過webdriver操作進行查詢1
'''
- 得到UI元素
from selenium import webdriver
import time
通過Keys模擬鍵盤
from selenium.webdriver.common.keys import Keys
操作哪個瀏覽器就對哪個瀏覽器建一個例項
自動按照環境變數查詢相應的瀏覽器
driver = webdriver.PhantomJS()
如果瀏覽器沒有在相應環境變數中,需要指定瀏覽器位置
driver.get("http://www.baidu.com")
通過函式查詢title標籤
print("Title: {0}".format(driver.title))
**案例v37**
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(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()
```