python爬蟲筆記01--urllib的使用

一、入門案例

urllib的request模塊urlopen方法默認發送一個GET請求到指定的頁面,然後返回HTTP的響應。通過read方法可以得到響應的內容,是byte類型的。

from urllib import request 
# 通過 urlopen 方法訪問 url,得到 response 響應
response = request.urlopen('http://www.baidu.com')
# 打印響應回來的內容
print(response.read())

二、發送post請求

import urllib.request as ur
import urllib.parse as up
# 構建 post 請求發送的數據
post_data = {'username':'name1','password':'pass1',}
# url 編碼
post_data = up.urlencode(post_data)
#  發送請求,data 不位 None 就是 post 請求
response = ur.urlopen(url='http://www.baidu.com',data=post_data)
# 打印
print(response.read())

當urlopen方法的data參數不爲None時,發送的就是post請求,
data參數的值需要通過parse.urlencode方法進行編碼。

三、Request對象
上面介紹了用urllib發送get請求和post請求的方法,當需要加入
請求頭時,就要用到Request對象了。

參數 含義
url 請求地址
data=None 數據,默認爲None,不爲None變成 post 請求,否則 get
headers={} 請求頭
origin_req_host=None 請求源地址
method=None 請求方法,當data=None時,默認爲get請求,否則爲post

構造Request對象,發送post請求,並添加請求頭。

import urllib.request as ur


# 構造 header
myheader = { 'user_agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',}
# 構造 request 對象
request = ur.Request(user=,headers=myheader)
# 發送請求
response = ur.urlopen(request)
# 打印
print(response.read())

除了可以在構造Request對象是添加headers,還可以通過Request對象的add_headers方法

request.add_header(‘User-Agent’,’………’)

四、opener
創建opener對象發送請求

import urllib.request as ur
# 創建 opener 對象
myopener = ur.build_opener()
# 創建 request
request = ur.Request(url='',data='',headers={})
# 發送請求和打印
response = myopener.open(request)print(response.read())

添加代理ip

import urllib.request as ur
# 代理 ip 地址
proxy_ip_port = { 'http':'192.168.1.1:80'}
#  創建代理 handler
proxy_handler = ur.ProxyHandler(proxy_ip_port)
# 創建 opener
myopener = ur.build_opener(proxy_handler)
# 創建 request 併發送
# ......

使用cookiejar獲取cookie

import urllib.request as ur

from http import cookiejar
# 實例化 cookie 對象
cookie = cookiejar.CookieJar()
# 創建 cookie 的 processor 對象
cookie_handler = ur.HTTPCookieProcessor(cookie)
# 創建 opener 對象
myopener = ur.build_opener(cookie_handler)
# 發送請求得到響應
request = ur.Request(url='http://www.baidu.com')
response = myopener.open(request)
# 打印 cookie
print(cookie)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章