Python3網路爬蟲開發實戰
1. 開發環境配置
2. 爬蟲基礎
3. 基本庫的使用
3.1使用urllib
- request : 它是最基本的HTTP 請求模組,可以用來模擬傳送請求。就像在瀏覽器裡輸入網址,然後回車一樣,只需要給庫方法傳入URL 以及額外的引數,就可以模擬實現這個過程了。
- error : 異常處理模組,如果出現請求錯誤, 我們可以捕獲這些異常,然後進行重試或其他操作以保證程式不會意外終止。
- parse : 一個工具模組,提供了許多URL 處理方法,比如拆分、解析、合併等。
- robotparser :主要是用來識別網站的robots.txt 檔案,然後判斷哪些網站可以爬,哪些網站不可以爬,它其實用得比較少。
3.1.1 傳送請求
1. urlopen()
import urllib.request
response= urllib.request.urlopen( ' https://www.python.org')
pri「1t(response. read(). decode (’ utf-8'))
urlopen()得到的是一個HTTPResposne 型別的物件,主要包含read() 、readinto ()、getheader(name )、getheaders () 、fileno ()等方法,以及msg 、version 、status 、reason 、debuglevel 、closed 等屬性。
print(response . status)
print(response .getheaders())
print(response . getheader (『Server'))
#輸出
200
[('Server', 'Tengine'),
('Content-……096908924e')]
'Tengine'
API:
urllib.request.urlopen(
url,
data=None,
timeout=<object object at 0x000002C274D622D0>,
*,
cafile=None,
capath=None,
cadefault=False,
context=None,
)
data引數
data 引數是可選的,如果它是位元組流編碼格式的內容,即bytes 型別,則需要通過bytes()方法轉化。如果傳遞了這個引數,則它的請求方式就不再是GET 方式,而是POST 方式。
data = bytes(urllib.parse.urlencode({'word':'hello'}),encoding='utf8')
response= urllib.request.urlopen('http://httpbin.org/post',data)
print(response.read())
timeout引數
用於設定超時時間,單位為秒,如果請求超出了設定的這個時間, 還沒有得到響應, 就會丟擲異常
response= urllib.request.urlopen('http://httpbin.org/get',timeout=1)
print(response.read())
其他引數
引數 | 作用 |
---|---|
context | 必須是ssl.SSLContext 型別,用來指定SSL 設定 |
cafile | 指定CA 證照 |
capath | 指定CA 證照路徑 |
2. Request
request = urllib.request.Request('https://creator.douyin.com/content/manage')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
請求網頁,得到Request型別的物件
API
urllib.request.Request(
url,
data=None,
headers={},
origin_req_host=None,
unverifiable=False,
method=None,
)
引數 | 說明 |
---|---|
url | 必傳引數 |
data | 必須傳bytes(位元組流)類 |
headers | 一個字典,它就是請求頭 |
origin_req_host | 請求方的host 名稱或者IP 地址 |
origin_req_host | 請求方的host 名稱或者IP 地址 |
unverifiable | 表示這個請求是否是無法驗證的,預設是False ,意思就是說使用者沒有足夠許可權來選擇接收這個請求的結果 |
method | 一個字串,用來指示請求使用的方法 |
headers = {
'User_Agent':'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)',
'Host':'httpbin.org'
}
dict = {'name':'Germey'}
data = bytes(parse.urlencode(dict),encoding='utf8')
req = request.Request(url,data,headers,method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))
3. 高階用法
Handler
類 | 說明 |
---|---|
BaseHandler 類 | 所有其他Handler 的父類,它提供了最基本的方法 |
HITPDefaultErrorHandler | 處理HTTP 響應錯誤,錯誤都會丟擲HTTP Error 型別的異常 |
HTTPRedirectHandler | 處理重定向 |
HTTPCookieProcessor | 處理Cookies |
ProxyHandler | 設定代理, 預設代理為空 |
HTTPPasswordMgr | 管理密碼,它維護了使用者名稱和密碼的表 |
HTTPBasicAuthHandler | 管理認證,如果一個連結開啟時需要認證,那麼可以用它來解決認證問題 |
Opener
之前使用的Request 和urlopen( )相當於類庫為你封裝好了極其常用的請求方法,利用它們可以完成基本的請求
Opener 可以使用open()方法,返回的型別和urlopen()如出一轍
一般利用利用Handler來構建Opener
驗證——HTTPBasicAuthHandler
from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, build_opener
from urllib.request import URLError
username = 'username'
password = 'password'
url = 'http://localhost:5000/'
p = HTTPPasswordMgrWithDefaultRealm()#例項化
p.add_password(None,url,username,password)#新增url及使用者和密碼
auth_handler = HTTPBasicAuthHandler(p)
opener = build_opener(auth_handler)
try:
result = opener.open(url)
html = result.read().decode('utf-8')
print(html)
except URLError as e:
print(e.reason)
相關文章
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- python3網路爬蟲開發實戰pdfPython爬蟲
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE
- 《Python3網路爬蟲開發實戰》開源啦!Python爬蟲
- [Python3網路爬蟲開發實戰] Charles 的使用Python爬蟲
- [Python3網路爬蟲開發實戰] --Splash的使用Python爬蟲
- 《Python3 網路爬蟲開發實戰》—學習筆記Python爬蟲筆記
- Python3網路爬蟲開發實戰(第二版)Python爬蟲
- Python3網路爬蟲開發實戰——第1章 開發環境Python爬蟲開發環境
- 面前最全《崔慶才python3網路爬蟲開發實戰》Python爬蟲
- 《Python3網路爬蟲開發實戰程式碼》基本庫使用Python爬蟲
- 《Python3網路爬蟲開發實戰》抽獎贈書活動Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 2-網頁基礎Python爬蟲網頁
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- python3 網路爬蟲開發實戰 貓眼top100Python爬蟲
- 【閱讀筆記】《Python3網路爬蟲開發實戰》PDF文件筆記Python爬蟲
- python3網路爬蟲開發實戰【高清掃描帶目錄】Python爬蟲
- Python3 大型網路爬蟲實戰 001 --- 搭建開發環境Python爬蟲開發環境
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- Python 3網路爬蟲開發實戰Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- Python3網路爬蟲開發實戰——第3章 基本庫的使用Python爬蟲
- python3網路爬蟲開發實戰-線上版-可複製貼上Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 1-HTTP基本原理Python爬蟲HTTP
- Python3網路爬蟲快速入門實戰解析Python爬蟲
- 【Python3網路爬蟲開發實戰】3.4-抓取貓眼電影排行Python爬蟲
- python3網路爬蟲開發實戰(配置踩坑及學習備忘)Python爬蟲
- 《Python3網路爬蟲開發實戰(第二版)》內容介紹Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 5-代理的基本原理Python爬蟲
- 網路爬蟲(六):實戰爬蟲
- 計算機書籍- 網路爬蟲開發實戰計算機爬蟲
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-1 使用XPathPython爬蟲
- 《Python3網路爬蟲開發實戰(第二版)》今天正式上市了!!!!Python爬蟲