爬蟲前奏
爬蟲的實際例子
- 搜索引擎(百度、谷歌、360搜索等)
- 伯樂在線
- 惠惠購物助手
- 數據分析與研究(數據冰山知乎專欄)
- 搶票軟件等
什么是網絡爬蟲
通俗理解:爬蟲是一個模擬人類請求網站行為的程序,可以自動請求網頁,并將數據爬取下來,然后使用一定的規則提取有價值的數據
通用爬蟲和聚焦爬蟲
**通用爬蟲:**通用爬蟲是搜索引擎抓取系統(百度、谷歌、搜狗等)的重要組成部分,主要是將互聯網上的網頁下載到本地,形成一個互聯網內容的鏡像備份
**聚焦爬蟲:**是面向特定需求的一種網絡爬蟲程序,他與通用爬蟲的區別在于:聚焦爬蟲在實施網頁抓取的時候會對內容進行篩選和處理,盡量保證只抓取與需求相關的網頁信息
HTTP協議和Chrome抓包工具
什么是http和https協議
- http:中文意思就是超文本傳輸協議,是一種發布和接收HTML頁面的方法。服務器端口是80端口。
- https:是http協議的加密版本,在http下加入了SSL層,服務器端口號是443端口
在瀏覽器中發送一個http請求的過程
當用戶在瀏覽器的地址欄中輸入一個URL并按回車鍵之后,瀏覽器會向http服務器發送http請求,http請求主要分成“get”和“post”兩種方法
- 當我們在瀏覽器輸入URL:http://www.baidu.com的時候,瀏覽器會發送一個request請求去獲取http://www.baidu.com的html文件,服務器把response文件對象發送回瀏覽器
- 瀏覽器分析response中的html,發現其中引用很多其他的文件,比如images文件,css文件,js文件。瀏覽器會自動再次發送request去獲取圖片,css文件或者js文件
- 當所有的文件都下載成功后,網頁會根據html語法結構,完整的顯示出來
url詳解
URL:統一資源定位符
scheme
:
//
host
:
port
/
path
/
?query
-
string
=
xxx
#anchor
- scheme:代表的是訪問的協議,一般為http或者https以及ftp等
- host:主機名,域名,比如www.baidu.com
- port:端口號,當你訪問一個網站的時候,瀏覽器默認使用80端口
- path:查找路徑,比如:www.jianshu.com/trending/now,后面的trending/now就是path
- query-string:查詢字符串,比如www.baidu.com/s?wb=python,后面的wb=python就是查詢字符串
-
anchor:錨點,后臺一般不用管,前段用來做頁面定位的
在瀏覽器中請求一個url,瀏覽器會對這個url進行一個編碼。除英文字母,數據和部分符號外,其他的全部使用百分號+十六進制碼值進行編碼
常用的請求方法
在http協議中,定義了八種請求方法,這里介紹兩種常用的請求方法,分別是get請求和post請求
- get請求:一般情況下,只從服務器獲取數據下來,并不會對服務器資源產生任何影響的時候會使用get請求
- post請求:向服務器發送數據(登陸)、上傳文件等,會對服務器資源產生影響的時候會只用post請求,以上是在網站開發中常用的兩種方法。并且一般情況下都會遵循使用的原則。但是有的網站和服務器為了做反爬蟲機制,也經常會不按常理出牌,有可能一個應該使用get方法的請求就一定要改成post請求,這里需要視情況而定
請求頭常見參數
在http協議中,向服務器發送一個請求,數據分成三部分,第一個是把數據放在url中,第二個是把數據放在body中(在post請求中),第三個是將數據放在head中。這里介紹在網絡爬蟲中經常會用到的一些請求參數
- User-Agent:瀏覽器名稱。這個在網絡爬蟲中經常會被使用到。請求一個網頁的時候,服務器通過這個參數就可以知道這個請求是由哪種瀏覽器發送的,如果我們是通過爬蟲發送請求,那么我們的User-Agent就是python,這對于那些有反爬蟲機制的網站來說,可以輕易的判斷就是爬蟲,因此這里需要設置這個值來偽裝我們的爬蟲
- Referer:表明當前這個請求是從哪個url過來的,這個一般也可以用來做反爬蟲技術。如果不是從指定的頁面過來的,那么就不做相應的響應
- Cookie:http協議是無狀態的,也就是同一個人發送了兩次請求,服務器沒有能力知道這兩個請求是否來自同一個人。因此這時候就用cookie來做標識,一般如果想要做登陸后才能訪問的網站,那么就需要發送cookie信息了
常見響應狀態碼
200:請求正常,服務器正常返回數據
301:永久重定向,比如在訪問www.jingdong.com的時候會重定向到www.jd.com
302:臨時重定向,比如在訪問一個需要登陸的頁面的時候,而此時沒有登陸,那么就會重定向到登陸頁面
400:請求的url在服務器上找不到,換句話說就是url錯誤
403:服務器拒絕訪問,權限不夠
500:服務器內部錯誤,可能是服務器出現bug了
chrome抓包工具
chrome瀏覽器是一個非常接近開發者的瀏覽器。可以方便的查看網絡請求以及發送的參數,對著網頁 右鍵->檢查,然后就可以打開開發者選項
Elements:展示當前網頁是由哪些代碼構成的
Console:控制臺,一般在抓包中間用的并不是很多
Sources:查看一個網頁由哪些文件組成的
Network:查看瀏覽器發起的一個具體的請求
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
