目前獲取請求的爬取工具-requests模組絕對是獨占鰲頭,但是urllib庫作為python的內建模組,實力也不容小覷,在爬蟲專案中,urllib還是時常會被用到,因此許多爬蟲課也將urllib作為入門學習的前期課程。
一、urllib庫常見內建函式及其使用1.urllib.request.urlretrieve
2.urllib.request.urlopen
3.urllib.request.request
4.urllib.parse.urlencode
5.urllib.parse.quote
二、示例、使用urllib爬取有道詞典利用python儲存檔案通常使用 with open方法例項如下
import requests
url =
""res = requests.get(url)
with
open
("jame.png"
,'wb'
)as f:
f.write(res.content)
f.close(
)
使用urllib內建函式即可實現例項
import urllib.request
url =
""f = urllib.request.urlretrieve(url,
'james.png'
)print
(f)
import urllib.request
#url = ""
#使用 urllib.request.urlopen向**發出乙個請求並且得到乙個響應
#f = urllib.request.urlopen(url)
# read表示讀取響應得到的資料
#print(f.read())
#當返回的response是乙個位元組的時候需要使用decode進行解碼解為字串
#print(f.read().decode("utf-8"))
http請求分為get和post請求,當遇到post請求時,需要在urllib.request.request()中加入data引數。
當遇到反爬蟲機制,使用urllib庫訪問可以通過以下幾步
1.使用urllib.request.request()建立乙個請求物件2.再將請求物件放入urllib.request.urlopen()得到乙個響應
3.讀取響應物件
例項:
#1.建立請求物件
response = urllib.request.request(url,headers=headers)
#2,響應請求物件
f = urllib.request.urlopen(response)
#3.讀取物件
html=f.read(
).decode(
'utf-8'
)
由於urllib不能識別漢字所以使用urllib.parse.urlencode將資料編碼成十六機制的資料,urllib.parse.urlencode只能傳入字典格式
import urllib.request
import urllib.parse
baseurl =
''content =
content = urllib.parse.urlencode(content)
url = baseurl+content
headers =
reponse = urllib.request.request(url,headers=headers)
r = urllib.request.urlopen(reponse)
print
(r.read(
).decode(
'utf-8'
))
此**是最終將url拼接,將搜尋的關鍵字的網頁源**爬取下來
與urllib.parse.urlencode相同的是都將資料進行編碼,有一點不同的是這個方法傳入的是字串 urllib.parse.urlencode傳入的是字典
import urllib.parse
baseurl =
'wd='
r =input
("請輸入"
)r=urllib.parse.quote(r)
url = baseurl+r
print
(url)
import urllib.parse
import urllib.request
import json
headers =
key =
input
("請輸入要搜尋的"
)data =
url =
""data = urllib.parse.urlencode(data)
#將資料轉化為位元組流模式
data =
bytes
(data,
'utf-8'
)req = urllib.request.request(url,data=data,headers=headers)
res =urllib.request.urlopen(req)
html = res.read(
).decode(
'utf-8'
)#將json型別的資料轉化為字典
dict
= json.loads(html)
a =dict
['translateresult'][
0][0
]['tgt'
]print
(a)
其中json型別的資料是通過loads方法將json轉化為字典
由於urllib.request只能接受位元組流所以要將data轉化為位元組流格式
爬蟲基礎 urllib庫
使用 urllib 匯入必要模組 from urllib import request 如果需要 url轉碼 from urllib import parse print parse.quote 范冰冰 e8 8c 83 e5 86 b0 e5 86 b0 urlopen url rsp reque...
python 爬蟲基礎篇 urllib庫
衣帶漸寬終不悔,為伊消得人憔悴。urllib.request模組 該模組是urllib的核心模組用於傳送請求,獲取請求返回結果。urlopen 發起請求 response urllib.request.urlopen url,data none,timeout,cafile none,capath ...
Python爬蟲入門筆記 urllib庫的使用
1 直接訪問 import urllib2 url 直接請求 response urllib2.urlopen url 獲取狀態碼,如果是200表示成功 print response.getcode 列印 print response.read python語言就是這麼簡潔,幾行 就把網頁爬了下來,...