urllib庫的常見用法

2021-09-24 06:47:52 字數 3643 閱讀 9008

先導入三個包:

複製**最簡單的urlopen()

url = ""         

response = urllib.request.urlopen(url)

print(response.read())

複製**

user_agent = ''

cookie = ''

referer = ''

host = ''

content_type = ''

複製**

url = ''

values =

headers=

複製**

proxy_handler = urllib.request.proxyhandler()

opener = urllib.request.build_opener(proxy_handler)

複製**

cookie_jar = http.cookiejar.cookiejar()

複製**

# 1.安裝全域性opener,然後利用urlopen開啟url   

urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)

# 2.直接利用opener例項開啟url:

response = opener.open(url)

複製**

data = urllib.parse.urlencode(values).encode('utf-8')  

req = urllib.request.request(url,data,headers)

#或req.add_header('referer', '')

# req.add_header('origin', '')

# req.add_header('user-agent', 'mozilla/6.0 (iphone; cpu iphone os 8_0 like mac os x)...')

response = urllib.request.urlopen(req,timeout=10)

the_page = response.read().decode('utf-8')

複製**

或者這樣:

data = urllib.parse.urlencode()

request1 = urllib.request.request(url,data=data,headers) # post方法

request2 = urllib.request.request(url+"?%s" % data) # get方法

複製**

#抓取網頁中的:同樣適用於抓取網路上的檔案。右擊滑鼠,找到屬性中的位址,然後進行儲存。

複製**

# http認證:即http身份驗證

password_mgr = urllib.request.httppasswordmgrwithdefaultrealm() # 建立乙個passwordmgr

password_mgr.add_password(realm=none, uri=url, user='username', passwd='password') # 新增使用者名稱和密碼

handler = urllib.request.httpbasicauthhandler(password_mgr) # 建立httpbasicauthhandler

opener = urllib.request.build_opener(handler) # 建立opner

response = opener.open(url, timeout=10) # 獲取資料

複製**

gzip壓縮: 在header中加入:'request.add_header('accept-encoding', 'gzip')'這是關鍵:建立request物件,新增乙個 accept-encoding 頭資訊告訴伺服器你能接受 gzip 壓縮資料

然後就是解壓縮資料:

import stringio

import gzip

compresseddata = f.read()

compressedstream = stringio.stringio(compresseddata)

gzipper = gzip.gzipfile(fileobj=compressedstream)

print gzipper.read()

複製**

多執行緒爬取:

from threading import thread

from queue import queue

from time import sleep

# q是任務佇列

#num是併發執行緒總數

#jobs是有多少任務

q = queue()

num = 2

jobs = 10

#具體的處理函式,負責處理單個任務

defdo_somthing_using

(arguments):

print arguments

#這個是工作程序,負責不斷從佇列取資料並處理

defworking

():while

true:

arguments = q.get()

do_somthing_using(arguments)

sleep(1)

q.task_done()

#fork num個執行緒等待佇列

for i in range(num):

t = thread(target=working)

t.setdaemon(true)

t.start()

#把jobs排入佇列

for i in range(jobs):

q.put(i)

#等待所有jobs完成

q.join()

複製**

urllib庫的常見用法

先導入三個包 複製 最簡單的urlopen url response urllib.request.urlopen url print response.read 複製 user agent cookie referer host content type 複製 url values headers...

Python爬蟲 Urllib庫的高階用法

有些 不會同意程式直接用上面的方式進行訪問,如果識別有問題,那麼站點根本不會響應,所以為了完全模擬瀏覽器的工作,我們需要設定一些headers 的屬性。首先,開啟我們的瀏覽器,除錯瀏覽器f12,我用的是chrome,開啟網路監聽,示意如下,比如知乎,點登入之後,我們會發現登陸之後介面都變化了,出現乙...

03 urllib庫的高階用法

有些 不會同意程式直接用上面的方式進行訪問,如果識別有問題,那麼站點根本不會響應,所以為了完全模擬瀏覽器的工作 1.1 設定請求頭 其中user agent代表用的哪個請求的瀏覽器 如下 from urllib.request import urlopen from urllib.request i...