⽹絡爬⾍,也叫⽹絡蜘蛛,就是⽤來⾃動瀏覽⻚⾯並從中提取內容的⽹絡機器⼈。
語言分類
系統結構和實現技術分類
通用爬蟲侷限性:
聚焦爬蟲,是"面向特定主題需求"的一種網路爬蟲程式,它與通用搜尋引擎爬蟲的區別在於: 聚焦爬蟲在實施網頁抓取時會對內容進行處理篩選,盡量保證只抓取與需求相關的網頁資訊。
封useragent(作業系統資訊,瀏覽器版本資訊。。。)
很多的爬蟲請求頭就是預設的一些很明顯的爬蟲頭python-requests/2.18.4
,諸如此類,當運維人員發現攜帶有這類headers
的資料報,直接拒絕訪問,返回403錯誤
基於使用者行為的反爬蟲
網頁的運維人員通過分析日誌發現最近某乙個ip訪問量特別特別大,某一段時間內訪問了無數次的網頁,則運維人員判斷此種訪問行為並非正常人的行為,於是直接在伺服器上**了此人ip。
動態頁面的反爬蟲
網頁開發者將重要資訊放在網頁中但不寫入html標籤中,而瀏覽器會自動渲染標籤中的js**將資訊展現在瀏覽器當中,而爬蟲是不具備執行js**的能力,所以無法將js事件產生的資訊讀取出來
封cookies
驗證碼驗證
當某一使用者訪問次數過多後,就自動讓請求跳轉到乙個驗證碼頁面,只有在輸入正確的驗證碼之後才能繼續訪問**
referer欄位反爬
請求頭字段裡需要攜帶cookie、user-agent、referer
等多個字段共同請求才可以獲取到資料,否則不返回資料。
抓包工具的介紹:
比較常用的抓包工具大概有4個,主要用作互補,配合使用基本所有平台、所有抓包需求都能滿足:
客戶端像web伺服器傳送http(s)請求時,請求會先經過**fiddler**伺服器。
fiddler**伺服器擷取客戶端的請求報文,再**到web伺服器,**之前可以做一些請求報文引數修改的操作。
web伺服器處理完請求以後返回響應報文,fiddler**伺服器會擷取web伺服器的響應報文。
fiddler處理完響應報文後再返回給客戶端。
幾個工具間的使用關係:
如果是windows平台,使用fidder
如果是mac平台,使用charles
如果是linux平台(手機或後台),使用tcpdump
如果抓非http(s)協議的包,如tcp包,則使用wireshark
抓包原理
客戶端像web伺服器傳送http(s)請求時,請求會先經過**fiddler**伺服器。
fiddler**伺服器擷取客戶端的請求報文,再**到web伺服器,**之前可以做一些請求報文引數修改的操作。
web伺服器處理完請求以後返回響應報文,fiddler**伺服器會擷取web伺服器的響應報文。
fiddler處理完響應報文後再返回給客戶端。
http和https區別?
明文傳輸,埠號80
http協議(hypertext transfer protocol,超文字傳輸協議):是一種發布和接收 html頁面的方法。
加密傳輸,埠號443
https(hypertext transfer protocol over secure socket layer)簡單講是http的安全版,在http下加入ssl層。 https = http+ssl
ssl(secure sockets layer 安全 套接層)主要用於web的安全傳輸協議,在傳輸層對網路連線進行加密,保障在internet上資料傳輸的安全。
ssl報錯解決方法?
注意:如果報錯ssl,那麼解決方案是
瀏覽器傳送http請求的過程:
url = ''
response = urllib.request.urlopen(url=url)
print(response.read().decode('utf-8'))
python爬蟲學習 01爬蟲介紹
前戲 1.你是否在節假日出行高峰的時候,想快速搶購火車票成功 2.你是否在網上購物的時候,想快速且精準的定位到口碑質量最好的商品 什麼是爬蟲 通過編寫程式,模擬瀏覽器上網,然後讓其去網際網路上抓取資料的過程。爬蟲的價值 實際應用 就業 爬蟲究竟是合法還是違法的?如何在使用編寫爬蟲的過程中避免進入局子...
01 爬蟲的基本概念
爬蟲網路爬蟲 又被稱為網頁蜘蛛,網路機械人 就是模擬客戶端傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式.原則上,只要是瀏覽器能做的事情,爬蟲都能做.爬蟲能做什麼 爬蟲的分類 爬蟲獲取的資料的用途 進行資料分析或者是機器學習相關的專案 爬蟲的流程 通用搜尋引擎的侷限性 ...
爬蟲xpath介紹以及基本用法
import requests from lxml import etree text html etree.html text 將上述字串解析為html文件,構造xpath的解析物件 result etree.tostring html 這裡是將html文件進行完成的修正 print result...