1. 程式人生 > >Python,小白自學爬蟲

Python,小白自學爬蟲

lib ext family lencod enc accept timeout request 大王

學習內容源自:博客園 金角大王

2018.7.22

Urllib庫的基本使用           

什麽是Urllib?

Urllib是python內置的HTTP請求庫
包括以下基礎模塊:
urllib.request   請求模塊
urllib.error     異常處理模塊
urllib.parse     url解析模塊
urllib.robotparser  robots.txt解析模塊

urllib.request的使用                                          

  • urlopen

urllib.request.urlopen

完整參數:urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

一般常用:urllib.requeset.urlopen(url,data,timeout)

  • url參數

簡單栗子

1 import urllib.request
2 3 response = urllib.request.urlopen(https://bj.ke.com/) 4 print(response.read().decode(utf-8))

結果:抓取貝殼網首頁的Javascript中的內容

response.read()可以獲取到網頁的內容,decode(‘utf-8‘)可以是抓取到的內容以utf-8的格式輸出

  • data參數

網站:http://httpbin.org 

該網站可以用來模擬各中請求

栗子:

1 import urllib.parse
2 import urllib.request
3 
4 data = bytes(urllib.parse.urlencode({
word: hello}), encoding=utf8) 5 print(data) 6 response = urllib.request.urlopen(http://httpbin.org/post, data=data) 7 print(response.read())

備註:

1、urllib.parse  url解析模塊

2、通過bytes(urllib.parse.urlencode())可以將post數據進行轉換放到urllib.request.urlopen的data參數中,這樣就完成了一次post請求

3、添加data參數的時候就是以post請求方式請求,如果沒有data參數就是get請求方式

4、GET和POST的區別就是:請求的數據GET是在url中,POST則是存放在頭部

GET:向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取數據,而不應當被用於產生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問

POST:向指定資源提交數據,請求服務器進行處理(例如提交表單或者上傳文件)。數據被包含在請求本文中。這個請求可能會創建新的資源或修改現有資源,或二者皆有。

  • timeout參數

{"args":{},"data":"","files":{},"form":{"word":"shang"},"headers":{"Accept-Encoding":"identity","Connection":"close","Content-Length":"10","Content-Type":"application/x-www-form-urlencoded","Host":"httpbin.org","User-Agent":"Python-urllib/3.7"},"json":null,"origin":"183.240.196.58","url":"http://httpbin.org/post"}

b‘{"args":{},"headers":{"Accept-Encoding":"identity","Connection":"close","Host":"httpbin.org","User-Agent":"Python-urllib/3.7"},"origin":"183.240.196.58","url":"http://httpbin.org/get"}\n‘

Python,小白自學爬蟲