爬蟲前期知識的儲備

字符串知識點:
bytes:二進制(互聯網上數據都是以二進制的方式傳輸的)
str:unicode編碼的呈現形式,經常使用的實現方式是UTF-8
str轉換爲bytes的方法:encode()
bytes轉換爲str的方法:decode()正則表達式

HTTP與HTTPS知識點:
HTTP:超文本傳輸協議,默認端口號80,性能更好
HTTPS:HTTP+SSL(安全套接字層),默認端口號443,安全性更好redis

爬蟲的概念與流程:
爬蟲是模擬瀏覽器發送請求,獲取響應
url-->發送請求-->獲取響應-->提取url-->提取數據-->保存數據庫

url的形式:
scheme:協議(http,https,ftp)
host:服務器的IP地址或者域名(www.baidu.com)
port:服務器的端口(80或者443)
path:訪問資源的路徑,百度搜索爬蟲(/s?wd=爬蟲&rsv_spt=1&rsv_iqid=0x8d278b16000116e5&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=9&rsv_sug1=8&rsv_sug7=100&rsv_sug2=0&inputT=1138&rsv_sug4=2397)
query-string:參數,發送給http服務器的數據
anchor:錨(跳轉到網頁的指定錨點位置)
完整的url例子:
https://www.baidu.com/s?wd=爬蟲&rsv_spt=1&rsv_iqid=0x8d278b16000116e5&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=9&rsv_sug1=8&rsv_sug7=100&rsv_sug2=0&inputT=1138&rsv_sug4=2397json

正確填寫url:http://www.baidu.com瀏覽器

錯誤的例子:www.baidu.com安全

HTTP請求頭:
打開F12,點擊Network,在ALL列表找到訪問的Host,查看request-Headers。
Host:主機和端口號
connection:連接類型
Upgrade-Insecure-Requests:通常爲1,升級爲HTTPS請求
User-Agent:瀏覽器名稱,須要模擬這個
Accept:多個傳輸文件類型
Accept-Encoding:文件編解碼格式
Accept-Language:支持的語言類型服務器

響應狀態碼:
200:成功
302or307:臨時轉移至新的url
404:相應失敗
500:服務器內部錯誤網絡

 

1.爬蟲是什麼:
抓取網頁數據的程序。框架

2.爬蟲怎麼抓取網頁數據:
網頁都有本身惟一的URL(統一資源定位符)來進行定位。
網頁都是用HTML(超文本標記語言)來描述頁面信息。
網頁都是使用HTTP/HTTPS(超文本傳輸協議)協議來傳輸HTML數據。
①首先肯定須要爬取的網頁URL地址。
②經過HTTP/HTTPS協議來獲取對應的HTML頁
③提取HTML頁面裏面有用的數據(反覆精練處理數據獲得目標數據)。機器學習

3.如何抓取HTML頁面:①HTTP請求的處理,urllib、urllib二、requests②處理後的請求能夠模擬瀏覽器發送請求、獲取服務器響應的文件。③解析服務器相應的內容:re,xpath、jsonpath、pyquery等。使用某一種描述性來給咱們須要的數據定義一個匹配規則,符合這個規則的數據就會被匹配。好比經常使用的re,正則表達式。④如何採集動態HTML、驗證碼的處理。一般的動態頁面採集:Selenium+PhantomJS(無界面):模擬真實瀏覽器加載js等非靜態數據。機器學習庫,機器圖像識別系統:Tesseract,能夠處理簡單的驗證碼,複雜的交給打碼平臺⑤Scrapy框架:(Scrapy,Pyspider)高定製性、高性能(異步網絡框架twisted):速度下載快,提供數據存儲,數據下載,提取規則等組件。⑥分佈式策略:scrapy-redis,以Redis數據庫爲核心的一套組件讓Scrapy框架支持分佈式的功能,主要在Redis裏作請求指紋去重、請求分配、數據臨時存儲。⑦爬蟲-反爬蟲-反反爬蟲:爬蟲最難的就是網站另外一邊的反爬蟲人員。User-Agent、代理、驗證碼、動態數據加載、加密數據等。數據價值是否值得費勁作爬蟲,機器成本+人力成本>數據價值,通常能爬出來。

相關文章
相關標籤/搜索