爬虫前期知识的储备(二)
通用爬蟲與聚焦爬蟲:
通用爬蟲:搜索引擎用的爬蟲系統
1)目標:
把互聯網的網頁下載下來,放到本地服務器形成備份,
再對這些網頁做相關處理(提取關鍵字,去掉廣告),最后提供一個用戶檢索接口。
2)抓取流程:
首先選取一部分已有的URL,把這些URL放到待爬取隊列。
從隊列里取出這些URL,然后解析DNS得到主機IP,然后去這個IP地址對應的服務器下載HTML頁面,
保存到搜索引擎的本地服務器,之后把這個爬過的url放入已爬取隊列。
分析這些網頁內容,找出網頁里其他的URL連接,繼續執行第二步,直到爬取條件結束。
DNS:就是把域名解析成IP的技術。
3)搜索引擎如何獲取一個新網站的URL:
主動向搜索引擎主動提交網址;
在其它網站里設置網站的外鏈(友情鏈接);
搜索引擎會和DNS服務商進行合作,可以快速收錄新的網站。
4)通用爬蟲并不是萬物皆可爬,需要遵守一些規則:
Robots協議:協議會指明通用爬蟲可以爬取網頁的權限。
Robots.txt(詳情規則),一般只有大型的搜索引擎爬蟲會遵守。
個人寫的爬蟲就不管了。
5)通用爬蟲工作流程:
爬取網頁-->存儲數據-->存儲數據-->內容處理-->提供檢索/排名服務
6)搜索引擎排名:
PageRank值:根據網站的流量(點擊量/瀏覽量/人氣)統計,排名越高越值錢。
競價排名:誰給錢多,誰排名高。
7)通用爬蟲的缺點:
只能提供和文本相關的內容(HTML、Word、PDF)等,
不能提供多媒體文件(音樂、圖片、視頻)等,二進制文件(程序、腳本)等。
提供的結果千篇一律,不能針對不同領域不同專業的人提供不同的搜索結果。
不能理解人類語義上的檢索。
聚焦爬蟲:爬蟲程序員寫的是針對某種內容的爬蟲
為了解決通用爬蟲存在的問題,聚焦爬蟲出現了。
面向主題爬蟲,面向需求爬蟲,會針對某種特定的內容去爬取信息,
而且會保證內容和信息盡可能地相關。
聚焦爬蟲的工作原理:
url-list-->響應內容-->提取url(-->響應內容,直到獲取完成,進入下一步)-->提取數據-->入庫
HTTP和HTTPS
HTTP協議:是一種發布和接收HTML頁面的方法,即超文本傳輸協議。
HTTPS協議:HTTP的安全版,在HTTP下加入SSL層,SSL層在傳輸層對網絡連接進行加密。
HTTP通信由兩部分組成:客戶端請求消息與服務器響應消息
客戶端HTTP請求包括以下的格式:
請求行、請求頭部、空行、請求數據
HTTP請求主要分為Get和Post兩種方法。
GET是從服務器上獲取數據,POST是向服務器傳送數據。
如果要提交表單,選擇Post方式,使用Get方式會把用戶密碼暴露在地址欄上。
Cookie:通過在客戶端記錄的信息確定用戶的身份。
Session:通過在服務器端記錄的信息確定用戶的身份。
Fiddler是一個不錯的抓包工具,當然直接瀏覽訪問也可以。
那么接下來我們就寫一個簡單的爬蟲百度代碼:
from urllib import request import random#統一資源定位符 url="http://www.baidu.com"
#可以是User-Agent列表,也可以是代理列表 ua_list=[ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6814.400 QQBrowser/10.3.3005.400", "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1", "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36" ]
#在User-Agent列表中隨機選擇一個,更具有安全性 user_agent=random.choice(ua_list)
#User-Agent是爬蟲和反爬蟲斗爭的第一步,養成這個好習慣 headers={ "User-Agent":user_agent }
#向指定的url地址發送請求,并返回服務器響應的類文件對象 #在Python2中,是urllib2,在Python3被改成urllib.request. response=request.urlopen(url)
#服務器返回的類文件對象支持Python文件對象的操作方法 #read()方法就是讀取文件里的全部內容,返回字符串 html=response.read()
#打印響應內容 print(html)
#打印響應碼 print(response.getcode())
#返回實際數據的實際url,防止重定向的問題 print(response.geturl())
#返回服務器響應的HTTP報頭 print(response.info()) 輸出結果: (百度源碼略)
200
http://www.baidu.com
Date: Mon, 07 Jan 2019 06:47:42 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: Close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=B1228A8040377591F7EB96B1090C4AE2:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=B1228A8040377591F7EB96B1090C4AE2; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1546843662; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1461_21101_28205_28132_26350_28266_27245_22158; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cxy_all: baidu+395db271fbbb06e1373116f63b95c029
Cache-Control: private
Expires: Mon, 07 Jan 2019 06:47:25 GMT
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0xd80982870003d452
轉載于:https://www.cnblogs.com/Masterpaopao/p/10233204.html
總結
以上是生活随笔為你收集整理的爬虫前期知识的储备(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [bzoj3489]A simple r
- 下一篇: Rest_Framework之频率组件部