一、字符串知識點:
bytes:二進(jìn)制(互聯(lián)網(wǎng)上數(shù)據(jù)都是以二進(jìn)制的方式傳輸?shù)模?/p>
str:unicode編碼的呈現(xiàn)形式,常用的實現(xiàn)方式是UTF-8
str轉(zhuǎn)換為bytes的方法:encode()
bytes轉(zhuǎn)換為str的方法:decode()
二、HTTP與HTTPS知識點:
HTTP:超文本傳輸協(xié)議,默認(rèn)端口號80,性能更好
HTTPS:HTTP+SSL(安全套接字層),默認(rèn)端口號443,安全性更好
三、爬蟲的概念與流程:
爬蟲是模擬瀏覽器發(fā)送請求,獲取響應(yīng)
url-->發(fā)送請求-->獲取響應(yīng)-->提取url-->提取數(shù)據(jù)-->保存
四、url的形式:
scheme:協(xié)議(http,https,ftp)
host:服務(wù)器的IP地址或者域名(www.baidu.com)
port:服務(wù)器的端口(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:參數(shù),發(fā)送給http服務(wù)器的數(shù)據(jù)
anchor:錨(跳轉(zhuǎn)到網(wǎng)頁的指定錨點位置)
完整的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=2397
五、HTTP請求頭:
打開F12,點擊Network,在ALL列表找到訪問的Host,查看request-Headers。
Host:主機和端口號
connection:鏈接類型
Upgrade-Insecure-Requests:一般為1,升級為HTTPS請求
User-Agent:瀏覽器名稱,需要模擬這個
Accept:多個傳輸文件類型
Accept-Encoding:文件編解碼格式
Accept-Language:支持的語言類型
六、響應(yīng)狀態(tài)碼:
200:成功
302or307:臨時轉(zhuǎn)移至新的url
404:相應(yīng)失敗
500:服務(wù)器內(nèi)部錯誤
七、爬蟲基礎(chǔ)知識點
1、爬蟲是什么:
抓取網(wǎng)頁數(shù)據(jù)的程序。
2、爬蟲怎么抓取網(wǎng)頁數(shù)據(jù):
網(wǎng)頁都有自己唯一的URL(統(tǒng)一資源定位符)來進(jìn)行定位。
網(wǎng)頁都是用html(超文本標(biāo)記語言)來描述頁面信息。
網(wǎng)頁都是使用HTTP/HTTPS(超文本傳輸協(xié)議)協(xié)議來傳輸HTML數(shù)據(jù)。
①、首先確定需要爬取的網(wǎng)頁URL地址。
②、通過HTTP/HTTPS協(xié)議來獲取對應(yīng)的HTML頁
③、提取HTML頁面里面有用的數(shù)據(jù)(反復(fù)精練處理數(shù)據(jù)得到目標(biāo)數(shù)據(jù))。
3、如何抓取HTML頁面:
①、HTTP請求的處理,urllib、urllib2、requests
②、處理后的請求可以模擬瀏覽器發(fā)送請求、獲取服務(wù)器響應(yīng)的文件。
③、解析服務(wù)器相應(yīng)的內(nèi)容:re,xpath、jsonpath、pyquery等。
使用某一種描述性來給我們需要的數(shù)據(jù)定義一個匹配規(guī)則,
符合這個規(guī)則的數(shù)據(jù)就會被匹配。比如常用的re,正則表達(dá)式。
④、如何采集動態(tài)HTML、驗證碼的處理。
通常的動態(tài)頁面采集:Selenium+PhantomJS(無界面):模擬真實瀏覽器加載js等非靜態(tài)數(shù)據(jù)。
機器學(xué)習(xí)庫,機器圖像識別系統(tǒng):Tesseract,可以處理簡單的驗證碼,復(fù)雜的交給打碼平臺
⑤、Scrapy框架:(Scrapy,Pyspider)
高定制性、高性能(異步網(wǎng)絡(luò)框架twisted):速度下載快,提供數(shù)據(jù)存儲,數(shù)據(jù)下載,提取規(guī)則等組件。
⑥、分布式策略:scrapy-redis,以Redis數(shù)據(jù)庫為核心的一套組件
讓Scrapy框架支持分布式的功能,主要在Redis里做請求指紋去重、請求分配、數(shù)據(jù)臨時存儲。
⑦、爬蟲-反爬蟲-反反爬蟲:爬蟲最難的就是網(wǎng)站另一邊的反爬蟲人員。
User-Agent、代理、驗證碼、動態(tài)數(shù)據(jù)加載、加密數(shù)據(jù)等。
數(shù)據(jù)價值是否值得費勁做爬蟲,機器成本+人力成本>數(shù)據(jù)價值,一般能爬出來。






