爬蟲 反爬蟲 系列一 基礎之模擬請求 2

2021-07-14 14:21:15 字數 1662 閱讀 3108

基礎之模擬請求(2)

在開發爬蟲程式前,你應該知道你需要的資料來自哪兒,以及怎麼獲取。

為了更快的做到這一點,需要對http請求進行模擬進行驗證。

以下是我常用的幾種方式,基本上是足夠用了。

以南方航空官網為例,假如我想爬南航的機票航班資訊,那麼我會先用瀏覽器除錯一番。

瀏覽器除錯

用火狐瀏覽器開啟南航官網,先開啟偵錯程式【右擊頁面->檢視元素】,再提交如下查詢。

接下來會跳轉到航班頁面。

這個時候航班資訊已經出來了,說明剛才肯定有某個請求是負責獲取這些航班資料的,我們要找到這個請求。

通過檢視所有請求的響應資料,很容易就能找到,這是乙個名為query.ao的請求(還有另乙個query.ao請求,它獲取的是另一類資料)。

響應資料是乙個json格式的字串,在火狐中自動顯示成物件,能方便展開。

看到這裡,你就知道通過這個請求能夠獲取到對應的航班資訊,接下來看看這個請求是什麼樣的。

這是乙個post型別的http請求,通過【編輯和重發】按鈕,你可以修改請求的post引數再次傳送給伺服器,這裡我們不做任何修改,再次傳送同樣的請求,你會發現返回的資料是一模一樣的。

換句話說,這個請求在任何電腦上執行都會得到相同的結果,不信你可以試試。

瀏覽器的除錯功能還有很多,也有很多外掛程式輔助除錯,比如我就習慣在chrome裡使用【editthis cookie】外掛程式,可以很全面的除錯cookie,而且我也習慣在chrome裡除錯js**,基本上是火狐和chrome切換著除錯,有興趣的可以多琢磨琢磨。

以上是通過瀏覽器來模擬請求,既方便也快捷,但如果執行一些非常靈活的除錯會比較慢,如引數,cookie,請求頭的更改。

fiddler除錯

如果嫌瀏覽器除錯麻煩,我也會用fiddler來除錯。

也可以直接使用fiddler模擬請求傳送,如下圖所示,我把剛才的請求複製到fiddler中進行模擬傳送。

返回的資料如下圖所示:

返回的航班資料是一樣的,通過fillder,可以比瀏覽器更方便的除錯請求。

關於fillder工具的使用方法在網上能找到,這裡不再贅述。

以上介紹的是我常用的方式,你也可以使用其它工具來達到類似目的,如wireshark。

python模擬

對於爬蟲程式,最終目的就是在程式中實現資料請求,這樣才能自動化批量獲取資料。

這裡展示乙個最基礎的網頁資料請求,獲取南航官網的html頁面原始碼。

源**如下:

#!/usr/bin/python

import urllib2

def gethtml(url):

page = urllib2.urlopen(url)

html = page.read()

return html

url  = ""

print gethtml(url)

本節介紹的是最基礎的使用方式,目的是為新手搭建乙個基礎觀念以及解決思路。

關於http請求,很多細節需要讀者自己摸索,比如http請求頭各字段的含義?get請求與post請求的區別?以及urlencode編碼與json格式等概念。以上答案都可以在網際網路上搜尋到。

爬蟲 模擬請求

我們將要爬取人民網某些新聞中的資料,那我們該如何實現呢?首先我們先實現第一步 根據url,模擬url請求,根據url獲取網頁中的內容。設定全域性的標準cookie策略 requestconfig config requestconfig.custom setcookiespec cookiespec...

爬蟲(一)反爬蟲機制

爬蟲用久了,總是會被封的。魯迅 有些 特別是一些陳年老站,沒有做過反爬蟲機制的,我們可以盡情地爬,愉快地爬,把它們的 資料全都爬下來。最多出於情懷考慮,我們爬慢一點,不給它的伺服器太大壓力。但是對於有反爬蟲機制的 我們不能這樣。最簡單的反爬蟲機制應該是u a校驗了。瀏覽器在傳送請求的時候,會附帶一部...

glidedsky爬蟲之css反爬蟲

author cjp file cssfan.py time 2020 9 11 16 37 import re from operator import itemgetter import requests from lxml import etree defgao url items heade...