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