requests
requests是python實現的最簡單易用的HTTP庫,建議爬蟲使用requests
import requests
url = "https://api.github.com/events"
獲取某個網頁
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
各種請求
# 發送一個 HTTP POST 請求:
r = requests.post("http://httpbin.org/post",data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete') # 發送一個 HTTP delete 請求:
r = requests.head('http://httpbin.org/get') # 發送一個 HTTP head 請求:
r = requests.options('http://httpbin.org/get') # 發送一個 HTTP options 請求:
get 傳遞URL參數
?+鍵值對
response1 = requests.get("http://httpbin.org/get?key1=value1")
print(response1.url)
#http://httpbin.org/get?key1=value1
requests提供了params關鍵字參數來傳遞參數
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
還可以將一個列表作為值傳入
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 是一套跨平臺的瀏覽器自動化測試框架(工具),支持在多種系統環境、多種瀏覽器環境下使用,還可以使用多種編程語言來編寫測試。
Selenium
有多個項目構成,形成了一個多功能的測試系統:
- Selenium Core:支持DHTML 的測試案例(效果類似數據驅動測試),它是Selenium IDE 和Selenium RC
的引擎。 - Selenium Grid - 允許您在不同的計算機上并行運行不同瀏覽器的測試。也就是說,針對運行不同瀏覽器和操作系統的不同計算機同時運行多個測試。從本質上講,Selenium-Grid支持分布式測試執行。它允許在分布式測試執行環境中運行測試。
- Selenium IDE - 用于開發Selenium測試用例的工具。它是一個易于使用的Chrome和Firefox擴展,通常是開發測試用例的最有效方式。它使用現有的Selenium命令為您在瀏覽器中記錄用戶操作,并使用該元素的上下文定義參數。這不僅節省了時間,而且是學習Selenium腳本語法的絕佳方式。
- Selenium RC (Selenium Remote Control) - 是一個客戶端/服務器系統,允許您使用幾乎任何編程語言和測試框架在本地或其他計算機上控制Web瀏覽器。
- Selenium WebDriver - 主要新功能是集成WebDriver API。除了解決Selenium-RC API中的一些限制之外,WebDriver還旨在提供更簡單,更簡潔的編程接口。Selenium-WebDriver的開發是為了更好地支持動態網頁,頁面元素可能會在不重新加載頁面的情況下發生變化。WebDriver的目標是提供精心設計的面向對象的API,為現代高級Web應用程序測試問題提供改進的支持。
XPath
1.什么是XPath
Wikipedia這樣解釋XPath:XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。這里討論的是在XPath語言規范下,封裝而成的一種解析XML文檔的技術。在PHP,Python里,具體是指xpath這個函數。所以,Wikipedia提到的對XML文檔某部分位置的定位,就是用XPath的規范,定位到這個部分,為我所用。我們的目的是解析HTML網頁中的元素,將HTML轉換成XML文檔之后,就是XPath出鞘之時。具體的轉換方法,因開發環境而異,后文會附上一些實際工作中遇到的問題。下文所述的xpath()函數均指PHP語言核心函數庫中的函數xpath()。
2.XPath 路徑表達式
在使用XPath之前,需要先了解下XPath的節點,路徑概念,這也是XPath這門語言的單詞和語法。不求全通,至少了解嘛。其中,路徑表達式是xpath()的傳入參數。xpath()使用路徑表達式對XML文檔中的某個節點(或者多個節點)進行定位。路徑表達式實例:/html/body/div[@class=”content”] 。按照節點和路徑概念,這個表達式是按照html,body,div層級關系,尋找屬性里有class=”content”的div節點。當然,這個結果也可能是多個節點。
Beautiful Soup 庫一般被稱為bs4庫,支持Python3,是我們寫爬蟲非常好的第三方庫。因用起來十分的簡便流暢。所以也被人叫做“美味湯”。目前bs4庫的最新版本是4.60。下文會介紹該庫的最基本的使用,具體詳細的細節還是要看:[官方文檔](Beautiful Soup Documentation)
bs4
Beautiful Soup 庫一般被稱為bs4庫,支持Python3,是我們寫爬蟲非常好的第三方庫。因用起來十分的簡便流暢。所以也被人叫做“美味湯”。目前bs4庫的最新版本是4.60。下文會介紹該庫的最基本的使用,具體詳細的細節還是要看:[官方文檔](Beautiful Soup Documentation)
bs4庫的安裝
安裝的方式非常簡單:我們用pip工具在命令行里進行安裝
pip install beautifulsoup4
事實上,bs4庫 是解析、遍歷、維護、“標簽樹“的功能庫。
通俗一點說就是: bs4庫把html源代碼重新進行了格式化,
從而方便我們對其中的節點、標簽、屬性等進行操作