爬蟲入門到精通-網頁的下載

網頁的下載

本文章屬於爬蟲入門到精通系統教程第四講html

在爬蟲入門到精通第二講中,咱們瞭解了HTTP協議,那麼咱們如今使用這些協議來快速爬蟲吧web

本文的目標

當你看完本文後,你應該能爬取(幾乎)任何的網頁chrome

使用chrome抓包

抓包(packet capture)就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操做,也用來檢查網絡安全。抓包也常常被用來進行數據截取等。segmentfault

第一個案列:抓取輪子哥的動態

  1. 打開輪子哥動態這個網頁
    安全

  2. 打開抓包工具cookie

    • 點擊F12打開開發者工具網絡

    • 點擊Network(或者網絡)app

    • 按F5刷新下頁面(主要是讓請求重發一次,這樣就能抓到包了)工具

    • 應該會看到以下界面
      post

  3. 找到咱們須要的請求

    • 能夠看到以下截圖,裏面有這麼多的請求,那麼到底哪個纔是咱們須要的呢 ?

    • 這邊提供一個小技巧

      • 當你要抓的包是須要按F5刷新纔出來的,通常咱們須要的請求都在DOC裏面(整個頁面有刷新)

      • 當你要抓的包是點擊按鈕"加載更多"(或者拖到頁面最下面會自動加載的,整個頁面並無刷新)通常咱們須要的請求都在XHR裏面

    • 簡單來說就是若是整個頁面沒有刷新的話,那就是在XHR裏面,不然在DOC裏面

    • 由於本次抓包整個頁面有刷新,因此,咱們須要找的請求在DOC下面,能夠看到只有一個請求

  4. 驗證請求是對的

    • 有如下兩種方法(基本上用1,由於比較快)

      • 在咱們要抓包的頁面隨便copy出幾個字,在Respoinse中使用ctrl+f 查找,若是有找到,說明咱們找到的是對的 (我查找的是"和微軟粉絲談")

        • 把response中全部的內容複製到一個txt中,並更名爲"#.html"(這裏的#能夠隨便取)而後打開這個html,看看是否和咱們要抓的同樣

    • 若是發現要找的不對,那你能夠打開下一個請求檢查下

  5. 模擬發送

    • 點擊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. 找到正確的請求

  4. 用程序模擬發送

第二個案列:點贊

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(抓知乎登陸的包會用到)


最後的最後,收藏的大哥們,能幫忙點個贊麼~

相關文章
相關標籤/搜索