python获取动态数据采集仪代理_Python3爬虫技术文档(3)——动态页面数据采集,三,获取...
上文說到,我們可以通過分析Ajax訪問服務器的方式來獲取Ajax數據。Ajax也算動態渲染頁面的一種。所以,動態頁面也是可以爬取滴。
Selenium
Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能——創建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。簡而言之,Selenium可以模擬用戶操作瀏覽器,所以它也可以提取動態頁面。
安裝Selenium
cmd下輸入:
pip install selenium
同時下載瀏覽器對應版本的驅動。
Chrome:
點擊下載
Firefox:
點擊下載
IE:
點擊下載
下載后解壓到python安裝目錄的scripts下。
Selenium基本使用方法
聲明瀏覽器對象
Selenium支持許多的瀏覽器,我們首先需要讓系統知道你使用的是什么瀏覽器,我們可以用以下方式初始化:
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Sarari()
之后我們就可以使用調用browser對象,執行各種動作來模擬瀏覽器操作
訪問頁面
我們用get()方法來請求網頁,只需要傳入URL即可。這里我們訪問百度頁面,并打印出源代碼:
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.baidu.com’)
print(browser.page_source)
browser.close()
查找節點
單個節點
網頁構成是一個個超文本標記語言構成的,這些就是網頁的節點,我們想獲取某個信息就需要知道這個信息所在的地方在哪里。那么這里要通過查看網頁的源代碼。
比如這里我想提取這個圖片,通過查看源代碼知道它是在名字為logo的div里面的一個鏈接等等。那我們就可以通過以下方法獲取單個節點:
find_element_by_id()
find_element_by_name()
find_element_by_xpath()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_tag_name()
find_element_by_class_name()
find_element_by_css_selector()
另外還有個通用方法:
find_element()
這個方法比上面的方法更為靈活,需要傳入兩個參數,查找方式By和值:
from selenium import webdriver
from selenium webdriver.common.by import By
#...
input_first = browser.find_element(BY.ID, 'q')
#...
多個節點
多個節點我們需要find_elements()方法:
find_elements_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()
也可以用
find_elements()
這里就不在詳細贅述。
節點交互
Selenium最重要的就是可以和瀏覽器進行交互,其中常用的有:輸入文字的send_key()方法;清空文字的clear()方法;點擊按鈕的click()方法。示例如下:
#...
brower.find_elements_by_id('StudentId')[0].send_keys(StudentId) # 填入學號
brower.find_elements_by_id('Name')[0].send_keys(Password) # 填入密碼
brower.find_elements_by_id('codeInput')[0].send_keys(
brower.find_elements_by_id('code-box')[0].text) # 填入驗證碼
brower.find_elements_by_id('Submit')[0].click() # 提交登錄表單
brower.find_elements_by_id('platfrom2')[0].click() # 選擇健康填報
brower.find_elements_by_id('ckCLS')[0].click()
try:
brower.find_element_by_class_name('save_form').click() # 提交
time.sleep(3)
brower.close() # 關閉瀏覽器
#...
其中更多的操作可以參見官方文檔的交互動作介紹:
點擊鏈接
獲取節點信息
獲取屬性
get_attribute()
獲取文本值、id、位置、標簽名和大小
from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_naem)
print(input.size)
Selenium最主要的操作就是這樣了,其他更多詳細信息請訪問以下頁面:
點擊鏈接
總結
以上是生活随笔為你收集整理的python获取动态数据采集仪代理_Python3爬虫技术文档(3)——动态页面数据采集,三,获取...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python求corr_Python d
- 下一篇: python实现dns劫持_Python