2 資料採集 urllib模組

2022-07-26 16:24:09 字數 2701 閱讀 2359

python2環境下關於urllib2的使用可以學習這篇文章。本文主要針對python3環境下使用urllib模組實現簡單程式爬蟲。

# 引入依賴模組

from urllib import request

# 向伺服器傳送請求,獲取響應物件

response = request.urlopen("")

# 獲取包含在響應中的資料

html = response.read()

# 解碼

html = html.decode('utf-8')

# 列印結果

print(html)

結果為:

process finished with exit code 0

# 引入依賴模組

from urllib import request

import chardet

# 向伺服器傳送請求,獲取響應物件

response = request.urlopen("")

# 獲取包含在響應中的資料

html = response.read()

# 驗證編碼

encoding = chardet.detect(html).get('encoding')

# 解碼:

html = html.decode(encoding)

# 列印結果

print(html)

##2.請求物件包裝

- 前面的**中,目標**的 url 位址就是乙個普通的字串,通過該字串可以發起乙個具體的請求,但是在**操作過程中,客戶端傳送的乙個請求可能會包含較多的格式資料如請求 url、請求頭、請求體、引數、 cookie 等等資料;

- 爬蟲操作就是在模擬真實使用者的操作,請求的操作也可以通過請求物件的方式進行模擬,在python3 中的 urllib 模組下的 request 型別,就是乙個模擬傳送的請求物件。

- 具體的操作**如下:

```# 引入依賴的模組

from urllib import request

import chardet

# 將請求包裝成請求物件

req = request.request('')

# 通過 urlopen 傳送請求物件給伺服器,得到伺服器響應資料

response = request.urlopen(req)

# 得到響應資料

html = response.read()

# 編碼檢測並解碼

html = html.decode(chardet.detect(html).get('encoding'))

print(html)

```##3.請求頭設定

- 乙個完整的請求,對於請求資訊的描述,主要包含在請求頭(request header)中,請求頭中對於請求的資料格式、請求的資料型別、請求的語言環境、請求是否保持和伺服器的連線、請求的 cookie、客戶端身份資訊等都進行了描述性的定義,可以通過網路抓包工具可以明確的檢視到請求中包含的各項具體資訊。

- web 發展之初的請求也不是這麼複雜,主要是在不同瀏覽器軟體興起之後,由於瀏覽器軟體之間的差異,導致瀏覽器從伺服器獲取的資料展示風格出現了迥異的誤差,所以對於客戶端的瀏覽器資訊需要傳遞給伺服器進行區別處理,於是正常的請求中包含了大量的用於描述客戶端資訊的組成部分,該部分就是請求頭;請求頭是乙個 like dict 的物件,乙個正常的請求頭包含的內容一般如下:

--- accept 接受響應資料的格式

--- accept-encoding 接受響應資料的編碼

--- accept-languate 接受響應資料的語言環境

--- connection 是否保持連線

--- cookie 會話跟蹤資料

--- upgrade-insecure-requests 是否安全請求

--- referer 反外鏈限制

--- user-agent 瀏覽器**

--- more..

from urllib import request

import chardet

import random

# 定義多個 user-agent

my_headers = [

(khtml, like gecko) chrome/39.0.2171.95 safari/537.36 opr/26.0.1656.60'},

(khtml, like gecko) version/5.1.7 safari/534.57.2'},,,

]# 包裝請求# 爬蟲請求頭手工新增:新增方式 1

req = request.request('',

headers=random.choice(my_headers))

# 請求資料

response = request.urlopen(req)

# 獲取並驗證編碼

html = response.read()

encoding = chardet.detect(html).get('encoding')

html = html.decode(encoding)

# 列印結果

print(html)

2 爬蟲基礎 urllib2模組

底層操作request物件 請求頭設定之useragent使用者 請求頭設定 使用者 useragent 自定義請求頭訊息 請求方式之get post請求 get請求處理 post請求處理 handler處理器自定義開鎖人opener 自定義http opener 自定義proxy opener 會...

urllib2 模組基本運用

urllib2 模組的基本運用 1.urlopen 提供了乙個介面,可以用多種協議獲取url import urllib2 html urllib2.urlopen read 返回乙個request類 類檔案 物件 2.request 處理所有的url協議 import urllib2 req ur...

Python爬蟲之urllib模組2

python爬蟲之urllib模組2 pg 55,乙個待畢業待就業的二流大學生。看了一下上一節的反饋,有些同學認為這個沒什麼意義,也有的同學覺得太簡單,關於 beautifulsoup 和lxml 獲取後面的鏈結我們能不能如法炮製呢,我們先來試試。我們把 寫成下面那樣 然後我們現在來試試 結果我們發...