本文章屬於爬蟲入門到精通系統教程第四講html
在爬蟲入門到精通第二講中,咱們瞭解了HTTP協議,那麼咱們如今使用這些協議來快速爬蟲吧web
當你看完本文後,你應該能爬取(幾乎)任何的網頁chrome
抓包(packet capture)就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操做,也用來檢查網絡安全。抓包也常常被用來進行數據截取等。segmentfault
打開輪子哥動態這個網頁
安全
打開抓包工具cookie
點擊F12打開開發者工具網絡
點擊Network(或者網絡)app
按F5刷新下頁面(主要是讓請求重發一次,這樣就能抓到包了)工具
應該會看到以下界面
post
找到咱們須要的請求
能夠看到以下截圖,裏面有這麼多的請求,那麼到底哪個纔是咱們須要的呢 ?
這邊提供一個小技巧
當你要抓的包是須要按F5刷新纔出來的,通常咱們須要的請求都在DOC裏面(整個頁面有刷新)
當你要抓的包是點擊按鈕"加載更多"(或者拖到頁面最下面會自動加載的,整個頁面並無刷新)通常咱們須要的請求都在XHR裏面
簡單來說就是若是整個頁面沒有刷新的話,那就是在XHR裏面,不然在DOC裏面
由於本次抓包整個頁面有刷新,因此,咱們須要找的請求在DOC下面,能夠看到只有一個請求
驗證請求是對的
有如下兩種方法(基本上用1,由於比較快)
在咱們要抓包的頁面隨便copy出幾個字,在Respoinse中使用ctrl+f 查找,若是有找到,說明咱們找到的是對的 (我查找的是"和微軟粉絲談")
把response中全部的內容複製到一個txt中,並更名爲"#.html"(這裏的#能夠隨便取)而後打開這個html,看看是否和咱們要抓的同樣
若是發現要找的不對,那你能夠打開下一個請求檢查下
模擬發送
點擊Headers
能夠看到請求的url是: https://www.zhihu.com/people/...
方法是: GET
requests headers 是(下圖中框出來的地方)
因此咱們的代碼應該是:
import requests # 這裏的headers就是咱們上圖框中的headers request_headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate, sdch, br', 'Accept-Language':'zh-CN,zh;q=0.8', 'Cache-Control':'max-age=0', 'Connection':'keep-alive', 'Cookie':'', 'Host':'www.zhihu.com', 'Referer':'https://www.zhihu.com/', 'Upgrade-Insecure-Requests':'1', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' } #上圖中的url url = "https://www.zhihu.com/people/excited-vczh/activities" # 上圖中的請求方法(get) z = requests.get(url,headers=request_headers) print z.content
這段代碼簡單來講就是把 咱們抓包看到的用程序來實現
一個小總結
咱們爬取一個網頁的步驟能夠分爲以下:
打開要爬取的網頁
打開開發者工具,並讓請求重發一次(簡單講就是抓包)
找到正確的請求
用程序模擬發送
1.打開要爬取的網頁
咱們打開 "知乎 - 與世界分享你的知識、經驗和看法"
咱們要點讚的回答是這個
2.打開開發者工具,並讓請求重發一次
打開後"點擊贊一下",能夠看到有好多請求
3.找到正確的請求
咱們一個一個的點開請求看,發現就一個有返回值,並且這個返回值沒有意義,那麼怎麼肯定這個就是咱們要找的呢?
咱們能夠點擊Headers,看一下發送的參數
vote_up 很明顯,就是點讚的意思。因此這個應該就是咱們要找的。
這邊說一下,右邊"Headers,Preview,Response,Cookies,Timing"是什麼意思
咱們常常要看的有,headers 和 preview
headers 裏面咱們都有介紹過(請求頭,返回頭)
preview和response裏面的內容是相同的(preview裏面的內容格式化了,輸出的好看一些),裏面的內容是html返回值
cookies 裏面是cookie的值,只不過度成了key value的形式
Timing基本用不上,因此也不介紹了(想了解的話能夠本身百度...)
4.用程序模擬發送
咱們把headers所有copy,
url也和上面同樣
參數也是對的
請求方法是post
可是發現最終返回http code 400,這是爲何呢?
讓咱們留到後面講解~
看完本篇文章後,你應該要
能學會抓包
最後你們能夠抓一下知乎登陸的包哦~
小提示:當你要抓的網頁是會自動跳轉的話,那麼你須要選中「proserve log」
意思是不要在頁面從新加載後清除log(抓知乎登陸的包會用到)
最後的最後,收藏的大哥們,能幫忙點個贊麼~