摘要:筆者編寫的搜索引擎爬蟲在爬取頁面時遇到了網(wǎng)頁被重定向的情況,所謂重定向就是通過各種方法本文提到的為種將各種網(wǎng)絡請求重新轉(zhuǎn)到其它位置。即網(wǎng)頁中的標簽聲明了網(wǎng)頁重定向的鏈接,這種重定向由瀏覽器完成,需要編寫代碼進行處理。
筆者編寫的搜索引擎爬蟲在爬取頁面時遇到了網(wǎng)頁被重定向的情況,所謂重定向(Redirect)就是通過各種方法
(本文提到的為3種)將各種網(wǎng)絡請求重新轉(zhuǎn)到其它位置(URL)。
每個網(wǎng)站主頁是網(wǎng)站資源的入口,當重定向發(fā)生在網(wǎng)站主頁時,如果不能正確處理就很有可能會錯失這整個網(wǎng)站的內(nèi)容。
以下列出遇到的3種重定向情況(使用python2.7+requests編寫爬蟲):
在服務器端完成,一般來說爬蟲可以自適應,是不需要特別處理的,如響應代碼301(永久重定向)、302(暫時重定向)等。具體來說,可以通過requests請求得到的response對象中的url、status_code兩個屬性來判斷。當status_code為301、302或其他代表重定向的代碼時,表示原請求被重定向;當response對象的url屬性與發(fā)送請求時的鏈接不一致時,也說明了原請求被重定向且已經(jīng)自動處理。
2.meta refresh即網(wǎng)頁中的標簽聲明了網(wǎng)頁重定向的鏈接,這種重定向由瀏覽器完成,需要編寫代碼進行處理。例如,某一重定向如下面的html代碼第三行中的注釋所示,瀏覽器能夠自動跳轉(zhuǎn),但爬蟲只能得到跳轉(zhuǎn)前的頁面,不能自動跳轉(zhuǎn)。
解決辦法是通過得到跳轉(zhuǎn)前的頁面源碼,從中提取出重定向url信息(上述代碼第三行中的url屬性值)。
具體的操作:使用xpath("http://meta[@http-equiv="refresh" and @content]/@content")提取出content的值 或者使用正則表達式提取出重定向的url值。
通過JavaScript代碼形式進行重定向。如下面JavaScript代碼
對于這種方式的跳轉(zhuǎn),由于可以實現(xiàn)該功能的JavaScript語句有多種形式,不能再使用正則表達式提取url,只能考慮加載JavaScript代碼來進行解決,例如使用selenium 無頭瀏覽器phantomJS 模擬瀏覽器操作
關于phantomJS的一些簡單操作語法可以在我這篇phantomJS中看下
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42111.html
摘要:我們知道,在抖音中下載到的視頻是有水印的,這就催生出了很多抖音短視頻去水印的解析網(wǎng)站,小程序等。禁止重定向,設置運行結果,是一個標簽,便是重定向后的地址。 我們知道...
摘要:當我們試圖從新浪微博抓取數(shù)據(jù)時,我們會發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。三模擬登錄下面將介紹使用獲取新浪微博,然后使用提交從而實現(xiàn)模擬登錄。 當我們試圖從新浪微博抓取數(shù)據(jù)時,我們會發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。模擬登錄是定向爬蟲制作中一個必須克服的問題,只有這樣才能爬取到更多的內(nèi)容。 showImg(https://segmentfault.com/img/...
摘要:上一篇文章網(wǎng)絡爬蟲實戰(zhàn)部署相關庫的安裝下一篇文章網(wǎng)絡爬蟲實戰(zhàn)網(wǎng)頁基礎在寫爬蟲之前,還是需要了解一些爬蟲的基礎知識,如原理網(wǎng)頁的基礎知識爬蟲的基本原理基本原理等。由萬維網(wǎng)協(xié)會和工作小組共同合作制定的規(guī)范,目前廣泛使用的是版本。 上一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)---14、部署相關庫的安裝:Scrapyrt、Gerapy下一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)---16、Web網(wǎng)頁基礎...
摘要:最近在研究區(qū)塊鏈,閑來無事抓取了拉勾網(wǎng)上條區(qū)塊鏈相關的招聘信息。拉勾網(wǎng)的反爬蟲做的還是比較好的,畢竟自己也知道這種做招聘信息聚合的網(wǎng)站很容易被爬,而且比起妹子圖這種網(wǎng)站,開發(fā)的技術水平應該高不少。 最近在研究區(qū)塊鏈,閑來無事抓取了拉勾網(wǎng)上450條區(qū)塊鏈相關的招聘信息。過程及結果如下。 拉勾網(wǎng)爬取 首先是從拉勾網(wǎng)爬取數(shù)據(jù),用的requests庫。拉勾網(wǎng)的反爬蟲做的還是比較好的,畢竟自己也...
摘要:包括爬蟲編寫爬蟲避禁動態(tài)網(wǎng)頁數(shù)據(jù)抓取部署分布式爬蟲系統(tǒng)監(jiān)測共六個內(nèi)容,結合實際定向抓取騰訊新聞數(shù)據(jù),通過測試檢驗系統(tǒng)性能。 1 項目介紹 本項目的主要內(nèi)容是分布式網(wǎng)絡新聞抓取系統(tǒng)設計與實現(xiàn)。主要有以下幾個部分來介紹: (1)深入分析網(wǎng)絡新聞爬蟲的特點,設計了分布式網(wǎng)絡新聞抓取系統(tǒng)爬取策略、抓取字段、動態(tài)網(wǎng)頁抓取方法、分布式結構、系統(tǒng)監(jiān)測和數(shù)據(jù)存儲六個關鍵功能。 (2)結合程序代碼分解說...
閱讀 1773·2021-10-11 10:57
閱讀 2362·2021-10-08 10:14
閱讀 3400·2019-08-29 17:26
閱讀 3357·2019-08-28 17:54
閱讀 3030·2019-08-26 13:38
閱讀 2905·2019-08-26 12:19
閱讀 3615·2019-08-23 18:05
閱讀 1283·2019-08-23 17:04