python靜態爬取網頁的兩種方法

2021-10-01 12:22:41 字數 2542 閱讀 4356

2 requests方法實現

(不常用,第二種方法要記住)

所有的url字元代表要爬取的**

1.1、生成請求

import urllib3 #匯入urllib3庫

() #建立poolmanger例項

) #通過request函式建立請求,此處使用'get'方法

print

('伺服器響應碼:',rq.status)

print

('響應實體:'rq.data) #如果出現中文亂碼可 rq.data.

decode

('utf-8'

)

補充:常見的響應嗎狀態

狀態碼說明

通俗解釋

1xx響應中——表示請求已經接受,繼續處理

訊息:一般是告訴客戶端請求已經收到了,正在處理,別急。

2xx成功——表示請求已經被成功接收、理解、接受。

處理成功:一般表示請求收悉、我明白你要的、請求已受理、已經處理完成等資訊。

3xx重定向——要完成請求必須進行更進一步的操作

重定向到其它地方:它讓客戶端再發起乙個請求以完成整個處理。

4xx客戶端錯誤——請求有語法錯誤或請求無法實現

處理發生錯誤,責任在客戶端:如客戶端的請求乙個不存在的資源,客戶端未被授權,禁止訪問等。

5xx伺服器端錯誤——伺服器未能實現合法的請求。

處理發生錯誤,責任在服務端:如服務端丟擲異常,路由出錯,http版本不支援等。

1.2、請求頭處理(在上面的基礎上)

ua =

,headers=ua)

1.3、新增 timeout網路延時,retries重試,redirect重定向 設定
rq = http.

request

('get'

,url,timeout=

3.0,retries=

5,redirect=

4) #網路延時3秒,請求重試5次,重定向4次

1.4、request方法完整**
import urllib3

('伺服器響應碼:'

,rq.status)

print

('獲取的內容:'rq.data.

decode

('utf-8'

))

(重點)

2.1、生成請求

import requests

rqg = requests.

get(url) 生成get請求

print

('結果型別:'

type

(rqg)

)print

('狀態碼:'rqg.status_code)

print

('編碼:'rqg.encoding)

print

('響應頭:'rqg.headers)

print

('檢視網頁內容:'rqg.text)

2.2、指定編碼(一種手動,一種自動)
rqg.encoding =

'utf-8' #手動指定編碼(get獲取之後)

import chardet #匯入chardet庫

rqg.encoding=chardet.

detect

(rqg.content)

['encoding'

] #將檢測到的編碼賦值給rqg.encoding

2.3、請求頭與響應頭處理
ua =

,headers=ua,timeout=

2) #新增了網路延時

2.4、requests方法完整**
import requests

import chardet

ua =

rqg=requests.

get(url,headers=ua,timeout=

3.0)

rqg.encoding = chardet.

detect

(rqg.content)

['encoding'

]print

('檢視網頁內容:'

,rqg.text)

python爬蟲 爬取靜態網頁

爬蟲新手剛入門,萌新練手交流作 import requests import bs4 from bs4 import beautifulsoup 偽裝瀏覽器,獲取源 def gethtml url headers 偽裝瀏覽器 response requests.get url,headers hea...

Python爬取靜態網頁操作

靜態網頁一般指純粹的html格式的網頁,對於爬蟲來說,靜態網頁的資料都比較容易獲取,利用好requests庫就能輕鬆傳送http請求,獲取到網頁的資料。requests庫可以幫助我們獲取到響應內容,再通過一些引數來滿足我們的需求,它的安裝也十分簡單,對於windows使用者來說,在已經裝好pytho...

靜態網頁內容爬取(python)

以 漏洞掃瞄為例 from bs4 import beautifulsoup from urllib.request import urlopen import pymysql as mysqldb import re import os 插入資料 def insertdata lis cursor...