什麼是爬蟲?
爬蟲就是用來請求網站並提取數據的自動化程序.
●爬蟲的基本流程:
1.發起請求:
通過HTTP庫向目標站點發起請求,即發送一個Request請求可以包含額外的headers等信息,等待服務器響應.
2.獲取響應內容:
如果服務器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能有HTML,Json字符串,二進制數據(如圖片視頻)等類型.
3.解析內容:
得到的內容可能是HTML,可以用正則表達式,網頁解析庫進行解析.可能是Json,可以直接轉為Json對象解析.可能是二進制數據,可以做保存或者進一步的處理.
4.保存數據:
保存形式多樣,可以存為文本,也可以保存至數據庫,或者保存特定格式的文件.
什麼是Request和Response?
1.瀏覽器發送消息給網址所在的服務器,這個過程就叫做HTTP Request
2.服務器收到瀏覽器發送的消息後,能夠根據瀏覽器發送消息的內容,做相應處理,然後把消息回傳給瀏覽器.這個過程叫做HTTP Response.
3.瀏覽器收到服務器的Response信息後,會對信息進行相應處理,然後展示.
Request中包含什麼?
●請求方式:
主要有GET,POST兩種類型,另外還有HEAD,PUT,DELETE,OPTIONS等
●請求URL:
URL全稱同一資源定位符,如一個網頁文檔,一張圖片,一個視頻等都可以用URL唯一來確定
●請求頭Request Headers:
包含請求時的頭部信息,如User-Agent(用戶代理),Host,Cookies等信息
●請求體:
請求時額外攜帶的數據如表單提交時的表單數據
Response中包含什麼
●響應狀態:
有多種響應狀態,如200,代表成功,301跳轉,404找不到頁面,502服務器錯誤
●響應頭:
如內容類型,內容長度,服務器信息,設置cookie等等
●響應體:
最主要的部分,包含了請求資源的內容,如網頁HTML,圖片,二進制數據等.
也可以打印頭信息
print(response.headers)
print(response.status_code) 打印狀態碼
print(response.content) 二進制內容
print(response.content.decode()) 打印解碼後的網頁
抓取數據能抓怎樣的數據?
●網頁文本
如HTML文檔,Json格式文本等.
●圖片
獲取到的二進制文件,保存為圖片格式
●視頻
同為二進制文件,保存為視頻格式即可
●其他
只要能獲取到,都能抓取
解析方式:
1.直接解析
2.Json解析
3.正則表達式
4.BeautifulSoup
5.PyQuery
6.XPath
怎麼解決JavaScript渲染的問題?
●分析Ajax請求(返回的是一個json格式的字符串)
●Selenium/WebDriver
●Splash
●PyV8,Ghost.py
怎麼保存數據?
●文本
純文本,Json,Xml等
●關係型數據庫
如MySQL,Oracle,SQL Server等具有結構化表,結構形式存儲
●非關係型數據庫
如MongoDB,Redius等Key-Value形式存儲
●二進制文件
如圖片,視頻,音頻等直接保存成特定格式即可
關注不迷路!每天進步一點點!
閱讀更多 極客饕餮 的文章