和我一起入門python爬蟲

2021-09-19 20:07:24 字數 2258 閱讀 2847

前幾天就想寫乙個爬蟲系列的文章,因為比較忙所以沒有寫(還不是因為懶),趁著現在屋裡比較的涼爽,心也比較的靜,總結下目前遇到的一些爬蟲知識,本系列將從簡單的爬蟲開始說起,後會逐漸的提公升難度,同時會對反爬手段做乙個總結,以及用具體的事例來演示,不同的反爬現象和實現手段。

本系列側重點是應用和實戰,所以,對於軟體的安裝這些基本操作不做詳細講解,我這裡認為你已經有了一定的python基礎,所以對於python的安裝一定會有一定的了解了,這裡廢話不多說讓我們進入正題。

鑑於大多數人的系統是windows系統,所以這裡的所有內容都是在windows下進行的,另外推薦安裝谷歌瀏覽器,使用語言python,版本3.6(低版本不能使用requests_html)。主要的爬蟲模組requests_html。

2.建立一給session物件,目的是維持一次完整的會話。

session=htmlsession()

3.通過get方法訪問網路

url=''
get方法需要傳入兩個引數,乙個是url,乙個是headers(字典型別)。一般的我們傳入乙個user_agent就可以愉快的使用了。(這裡只是說一般的對於有先**伺服器還會監測headers的其他屬性內容)。我們會獲取乙個response物件。

拓展:如果檢視requests_html的原始碼會發現預設是給了幾個headers屬性的。

def

default_headers

():"""

:rtype: requests.structures.caseinsensitivedict

"""return caseinsensitivedict()

4.獲取網頁返回的狀態碼

一般的我們把200狀態碼認為是響應成功(並不一定是你想要的結果,比如登陸失敗有些也是200)。

其他常見的還有,404網頁訪問失敗,500伺服器拒絕訪問,302和301作為網頁的重定向。

if req.status_code==200:

print("ok")

5.獲取正確的網頁編碼

因為每個頁面的編碼不同,可能導致在解析的時候出現亂碼的情況,對此requests_html模組為我們提供了乙個可以高準確率獲取編碼的方法,目前來看對於絕大對數html頁面是沒有問題的,所以可以放心使用。

node_list=req.html.xpath("//div[@id='u1']/a/text()")

簡單說下上面xpath表示式的含義,//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。/表示從根節點擊取。後面跟的ediv表示是div節點,中括號裡面一般是做屬性判斷@id就是判斷id屬性然後取其值為ul的,後面緊跟的/a,表示上面div節點的下級所有含有a的節點,然後後面的text()是表示獲取該節點的文字資訊。

8.綜合整理下上面的**如下:

print("出錯了錯誤內容是",format_exc)

輸出結果:

爬蟲 404 try 和我一起學爬蟲

前幾天就想寫乙個爬蟲系列的文章,因為比較忙所以沒有寫 還不是因為懶 趁著現在屋裡比較的涼爽,心也比較的靜,總結下目前遇到的一些爬蟲知識,本系列將從簡單的爬蟲開始說起,以後會逐漸的提公升難度,同時會對反爬手段做乙個總結,以及用具體的事例來演示,不同的反爬現象和實現手段。本系列側重點是應用和實戰,所以,...

和我一起創業 規則

我是一名優秀的計算機軟體專家,擁有系統分析師證書。在我得創業聯盟中如果有 一名有資格的市場經理人,一位出色的ui設計師,這個聯盟將可以緊密地結合在一起,並產生創收。如果您是這樣2種人,那麼和我聯絡吧。1 我們每人初期以專業技術入股,分別佔1 3的股權。按照900股計算。每人300股。2 第乙個專案之...

和我一起學Flask ORM

from sqlalchemy.ext.declarative import declarative base engine create engine db url base declarative base engine 1,用base 類作為基類來寫自己的orm類 要定義tablename類屬...