先導入三個包:
複製**最簡單的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...