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

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