requests
requests是python實(shí)現(xiàn)的最簡單易用的HTTP庫松邪,建議爬蟲使用requests
import requests
url = "https://api.github.com/events"
獲取某個(gè)網(wǎng)頁
import requests
r = requests.get("https://api.github.com/events")
print(r) # <Response [200]>
print(type(r)) # <class 'requests.models.Response'>
print(r.status_code) # 200
各種請求
# 發(fā)送一個(gè) HTTP POST 請求:
r = requests.post("http://httpbin.org/post",data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete') # 發(fā)送一個(gè) HTTP delete 請求:
r = requests.head('http://httpbin.org/get') # 發(fā)送一個(gè) HTTP head 請求:
r = requests.options('http://httpbin.org/get') # 發(fā)送一個(gè) HTTP options 請求:
get 傳遞URL參數(shù)
?+鍵值對
response1 = requests.get("http://httpbin.org/get?key1=value1")
print(response1.url)
#http://httpbin.org/get?key1=value1
requests提供了params關(guān)鍵字參數(shù)來傳遞參數(shù)
parameter = {
"key1":"value1",
"key2":"value2"
}
response2 = requests.get("http://httpbin.org/get",params = parameter)
print(response2.url)
# http://httpbin.org/get?key1=value1&key2=value2
還可以將一個(gè)列表作為值傳入
parameter = {
"key1":"value1",
"key2":["value21","value22"]
}
response3 = requests.get("http://httpbin.org/get",params = parameter)
print(response3.url)
# http://httpbin.org/get?key1=value1&key2=value21&key2=value22
注意字典里值為 None 的鍵都不會被添加到 URL 的查詢字符串里。
parameter = {
"key1":"value",
"key2":None
}
response4 = requests.get("http://httpbin.org/get",params = parameter)
print(response4.url) #http://httpbin.org/get?key1=value
Selenium
Selenium 是一套跨平臺的瀏覽器自動化測試框架(工具),支持在多種系統(tǒng)環(huán)境瓜晤、多種瀏覽器環(huán)境下使用燃领,還可以使用多種編程語言來編寫測試棕孙。
Selenium
有多個(gè)項(xiàng)目構(gòu)成,形成了一個(gè)多功能的測試系統(tǒng):
- Selenium Core:支持DHTML 的測試案例(效果類似數(shù)據(jù)驅(qū)動測試)书蚪,它是Selenium IDE 和Selenium RC
的引擎。 - Selenium Grid - 允許您在不同的計(jì)算機(jī)上并行運(yùn)行不同瀏覽器的測試迅栅。也就是說殊校,針對運(yùn)行不同瀏覽器和操作系統(tǒng)的不同計(jì)算機(jī)同時(shí)運(yùn)行多個(gè)測試。從本質(zhì)上講库继,Selenium-Grid支持分布式測試執(zhí)行箩艺。它允許在分布式測試執(zhí)行環(huán)境中運(yùn)行測試。
- Selenium IDE - 用于開發(fā)Selenium測試用例的工具宪萄。它是一個(gè)易于使用的Chrome和Firefox擴(kuò)展艺谆,通常是開發(fā)測試用例的最有效方式。它使用現(xiàn)有的Selenium命令為您在瀏覽器中記錄用戶操作拜英,并使用該元素的上下文定義參數(shù)静汤。這不僅節(jié)省了時(shí)間,而且是學(xué)習(xí)Selenium腳本語法的絕佳方式居凶。
- Selenium RC (Selenium Remote Control) - 是一個(gè)客戶端/服務(wù)器系統(tǒng)虫给,允許您使用幾乎任何編程語言和測試框架在本地或其他計(jì)算機(jī)上控制Web瀏覽器。
- Selenium WebDriver - 主要新功能是集成WebDriver API侠碧。除了解決Selenium-RC API中的一些限制之外抹估,WebDriver還旨在提供更簡單,更簡潔的編程接口弄兜。Selenium-WebDriver的開發(fā)是為了更好地支持動態(tài)網(wǎng)頁药蜻,頁面元素可能會在不重新加載頁面的情況下發(fā)生變化瓷式。WebDriver的目標(biāo)是提供精心設(shè)計(jì)的面向?qū)ο蟮腁PI,為現(xiàn)代高級Web應(yīng)用程序測試問題提供改進(jìn)的支持语泽。
XPath
1.什么是XPath
Wikipedia這樣解釋XPath:XPath即為XML路徑語言(XML Path Language)贸典,它是一種用來確定XML文檔中某部分位置的語言。這里討論的是在XPath語言規(guī)范下踱卵,封裝而成的一種解析XML文檔的技術(shù)廊驼。在PHP,Python里惋砂,具體是指xpath這個(gè)函數(shù)妒挎。所以,Wikipedia提到的對XML文檔某部分位置的定位班利,就是用XPath的規(guī)范饥漫,定位到這個(gè)部分,為我所用罗标。我們的目的是解析HTML網(wǎng)頁中的元素庸队,將HTML轉(zhuǎn)換成XML文檔之后,就是XPath出鞘之時(shí)闯割。具體的轉(zhuǎn)換方法彻消,因開發(fā)環(huán)境而異,后文會附上一些實(shí)際工作中遇到的問題宙拉。下文所述的xpath()函數(shù)均指PHP語言核心函數(shù)庫中的函數(shù)xpath()宾尚。
2.XPath 路徑表達(dá)式
在使用XPath之前,需要先了解下XPath的節(jié)點(diǎn)谢澈,路徑概念煌贴,這也是XPath這門語言的單詞和語法。不求全通锥忿,至少了解嘛牛郑。其中,路徑表達(dá)式是xpath()的傳入?yún)?shù)敬鬓。xpath()使用路徑表達(dá)式對XML文檔中的某個(gè)節(jié)點(diǎn)(或者多個(gè)節(jié)點(diǎn))進(jìn)行定位淹朋。路徑表達(dá)式實(shí)例:/html/body/div[@class=”content”] 。按照節(jié)點(diǎn)和路徑概念钉答,這個(gè)表達(dá)式是按照html础芍,body,div層級關(guān)系数尿,尋找屬性里有class=”content”的div節(jié)點(diǎn)仑性。當(dāng)然,這個(gè)結(jié)果也可能是多個(gè)節(jié)點(diǎn)右蹦。
Beautiful Soup 庫一般被稱為bs4庫诊杆,支持Python3鲫懒,是我們寫爬蟲非常好的第三方庫。因用起來十分的簡便流暢刽辙。所以也被人叫做“美味湯”。目前bs4庫的最新版本是4.60甲献。下文會介紹該庫的最基本的使用宰缤,具體詳細(xì)的細(xì)節(jié)還是要看:[官方文檔](Beautiful Soup Documentation)
bs4
Beautiful Soup 庫一般被稱為bs4庫,支持Python3晃洒,是我們寫爬蟲非常好的第三方庫慨灭。因用起來十分的簡便流暢。所以也被人叫做“美味湯”球及。目前bs4庫的最新版本是4.60氧骤。下文會介紹該庫的最基本的使用,具體詳細(xì)的細(xì)節(jié)還是要看:[官方文檔](Beautiful Soup Documentation)
bs4庫的安裝
安裝的方式非常簡單:我們用pip工具在命令行里進(jìn)行安裝
pip install beautifulsoup4
事實(shí)上吃引,bs4庫 是解析筹陵、遍歷、維護(hù)镊尺、“標(biāo)簽樹“的功能庫朦佩。
通俗一點(diǎn)說就是: bs4庫把html源代碼重新進(jìn)行了格式化,
從而方便我們對其中的節(jié)點(diǎn)庐氮、標(biāo)簽语稠、屬性等進(jìn)行操作