日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

urllib模块学习

發(fā)布時(shí)間:2024/9/3 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 urllib模块学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

已剪輯自: http://xiaobaibook.com/details/51/

  概念:urllib是Python自帶的一個(gè)用于爬蟲的庫(kù),其主要作用就是可以通過(guò)代碼模擬瀏覽器發(fā)送請(qǐng)求。其常被用到的子模塊在Python3中的為urllib.request和urllib.parse,在Python2中是urllib和urllib2。

? ? ?使用流程:

  • 指定url
  • 基于urllib的request子模塊發(fā)起請(qǐng)求
  • 獲取響應(yīng)中的數(shù)據(jù)值
  • 持久化存儲(chǔ)

.由易到難的爬蟲程序

? ? 1.第一個(gè)簡(jiǎn)單的爬蟲程序:爬取搜狗首頁(yè)的頁(yè)面數(shù)據(jù)

import urllib.request import urllib.parse #1.指定url url = 'https://www.sogou.com/' #2.發(fā)起請(qǐng)求:使用urlopen函數(shù)發(fā)起請(qǐng)求,該函數(shù)返回一個(gè)響應(yīng)對(duì)象 response = urllib.request.urlopen(url=url) #3.獲取響應(yīng)對(duì)象中的頁(yè)面數(shù)據(jù):read函數(shù)可以獲取響應(yīng)對(duì)象中byte類型的數(shù)據(jù)值 page_text = response.read() #4.持久化存儲(chǔ):將爬取的頁(yè)面數(shù)據(jù)寫入文件進(jìn)行保存 with open('./sogou.html','w',encoding='utf-8') as fp:??? fp.write(page_text.decode())#使用decode將page_text轉(zhuǎn)成字符串類型

? ? 補(bǔ)充說(shuō)明:

urlopen函數(shù)原型:??? urllib.request.urlopen(url, data=None, timeout=<object object at 0x10af327d0>, *, cafile=None, capath=None, cadefault=False, context=None)在上述案例中我們只使用了該函數(shù)中的第一個(gè)參數(shù)url。在日常開發(fā)中,我們能用的只有url和data這兩個(gè)參數(shù)。 url參數(shù):指定向哪個(gè)url發(fā)起請(qǐng)求 data參數(shù):可以將post請(qǐng)求中攜帶的參數(shù)封裝成字典的形式傳遞給該參數(shù)(暫時(shí)不需要理解,后期會(huì)講) urlopen函數(shù)返回的響應(yīng)對(duì)象,相關(guān)函數(shù)調(diào)用介紹: response.headers():獲取響應(yīng)頭信息 response.getcode():獲取響應(yīng)狀態(tài)碼 response.geturl():獲取請(qǐng)求的url response.read():獲取響應(yīng)中的數(shù)據(jù)值(字節(jié)類型)

? ? 2.二進(jìn)制數(shù)據(jù)的爬取:爬取網(wǎng)絡(luò)上的某張圖片數(shù)據(jù),且存儲(chǔ)到磁盤

? ? ? ? 方法 1:

import urllib.request import urllib.parse #1.指定url url = 'https://pic.qiushibaike.com/system/pictures/12112/121121212/medium/ZOAND29U4NKNEWEF.jpg' #2.發(fā)起請(qǐng)求:使用urlopen函數(shù)發(fā)起請(qǐng)求,該函數(shù)返回一個(gè)響應(yīng)對(duì)象 response = urllib.request.urlopen(url=url) #3.獲取響應(yīng)對(duì)象中的圖片二進(jìn)制類型的數(shù)據(jù) img_data = response.read() #4.持久化存儲(chǔ):將爬取的圖片寫入本地進(jìn)行保存 with open('./tupian.png','wb') as fp:??? fp.write(img_data)

? ? ? ? 方法 2:

import urllib.request import urllib.parse url = 'https://pic.qiushibaike.com/system/pictures/12112/121121212/medium/ZOAND29U4NKNEWEF.jpg' # 函數(shù)原型:urllib.request.urlretrieve(url, filename=None) # 作用:對(duì)url發(fā)起請(qǐng)求,且將響應(yīng)中的數(shù)據(jù)值寫入磁盤進(jìn)行存儲(chǔ) urllib.request.urlretrieve(url=url,filename='./img.png')

? ? 3.url的特性:

url必須為ASCII編碼的數(shù)據(jù)值。所以我們?cè)谂老x代碼中編寫url時(shí),如果url中存在非ASCII編碼的數(shù)據(jù)值,則必須對(duì)其進(jìn)行ASCII編碼后,該url方可被使用。

  案例:爬取使用搜狗根據(jù)指定詞條搜索到的頁(yè)面數(shù)據(jù)(例如爬取詞條為‘周杰倫’的頁(yè)面數(shù)據(jù))

import urllib.request import urllib.parse url = 'https://www.sogou.com/web?query=周杰倫' response = urllib.request.urlopen(url=url) data = response.read() with open('./周杰倫.html','wb') as fp:??? fp.write(data) print('寫入文件完畢')

? ? 【注意】上述代碼中url存在非ascii編碼的數(shù)據(jù),則該url無(wú)效。如果對(duì)其發(fā)起請(qǐng)求,則會(huì)報(bào)如下錯(cuò)誤:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range

? ? 所以必須對(duì)url中的非ascii的數(shù)據(jù)進(jìn)行ascii的編碼,則該url方可被發(fā)起請(qǐng)求:

? ? ? ? 方法 1:使用quote函數(shù)

import urllib.request import urllib.parse url = 'https://www.sogou.com/web?query=%s' #對(duì)url中的非ascii進(jìn)行編碼.quote函數(shù)可以對(duì)非ascii的數(shù)據(jù)值進(jìn)行ascii的編碼word = urllib.parse.quote('周杰倫') #將編碼后的數(shù)據(jù)值拼接回url中 url = format(url%word) response = urllib.request.urlopen(url=url) data = response.read() with open('./周杰倫.html','wb') as fp:??? fp.write(data) print('寫入文件完畢')

? ? ? ? 方法2: 使用urlencode函數(shù)

import urllib.request import urllib.parse url = 'https://www.sogou.com/web?' #將get請(qǐng)求中url攜帶的參數(shù)封裝至字典中 param = {??? 'query':'周杰倫' } #對(duì)url中的非ascii進(jìn)行編碼 param = urllib.parse.urlencode(param) #將編碼后的數(shù)據(jù)值拼接回url中 url += param response = urllib.request.urlopen(url=url) data = response.read() with open('./周杰倫1.html','wb') as fp:??? fp.write(data) print('寫入文件完畢')

? ? 4.通過(guò)自定義請(qǐng)求對(duì)象,用于偽裝爬蟲程序請(qǐng)求的身份。

   之前在講解http常用請(qǐng)求頭信息時(shí),我們講解過(guò)User-Agent參數(shù),簡(jiǎn)稱為UA,該參數(shù)的作用是用于表明本次請(qǐng)求載體的身份標(biāo)識(shí)。如果我們通過(guò)瀏覽器發(fā)起的請(qǐng)求,則該請(qǐng)求的載體為當(dāng)前瀏覽器,則UA參數(shù)的值表明的是當(dāng)前瀏覽器的身份標(biāo)識(shí)表示的一串?dāng)?shù)據(jù)。如果我們使用爬蟲程序發(fā)起的一個(gè)請(qǐng)求,則該請(qǐng)求的載體為爬蟲程序,那么該請(qǐng)求的UA為爬蟲程序的身份標(biāo)識(shí)表示的一串?dāng)?shù)據(jù)。有些網(wǎng)站會(huì)通過(guò)辨別請(qǐng)求的UA來(lái)判別該請(qǐng)求的載體是否為爬蟲程序,如果為爬蟲程序,則不會(huì)給該請(qǐng)求返回響應(yīng),那么我們的爬蟲程序則也無(wú)法通過(guò)請(qǐng)求爬取到該網(wǎng)站中的數(shù)據(jù)值,這也是反爬蟲的一種初級(jí)技術(shù)手段。那么為了防止該問(wèn)題的出現(xiàn),則我們可以給爬蟲程序的UA進(jìn)行偽裝,偽裝成某款瀏覽器的身份標(biāo)識(shí)。

   上述案例中,我們是通過(guò)request模塊中的urlopen發(fā)起的請(qǐng)求,該請(qǐng)求對(duì)象為urllib中內(nèi)置的默認(rèn)請(qǐng)求對(duì)象,我們無(wú)法對(duì)其進(jìn)行UA進(jìn)行更改操作。urllib還為我們提供了一種自定義請(qǐng)求對(duì)象的方式,我們可以通過(guò)自定義請(qǐng)求對(duì)象的方式,給該請(qǐng)求對(duì)象中的UA進(jìn)行偽裝(更改)操作。

import urllib.request import urllib.parse url = 'https://www.sogou.com/web?' #將get請(qǐng)求中url攜帶的參數(shù)封裝至字典中 param = {??? 'query':'周杰倫' } #對(duì)url中的非ascii進(jìn)行編碼 param = urllib.parse.urlencode(param) #將編碼后的數(shù)據(jù)值拼接回url中 url += param #封裝自定義的請(qǐng)求頭信息的字典: #將瀏覽器的UA數(shù)據(jù)獲取,封裝到一個(gè)字典中。該UA值可以通過(guò)抓包工具或者瀏覽器自帶的開發(fā)者工具中獲取某請(qǐng)求,從中獲取UA的值 #注意:在headers字典中可以封裝任意的請(qǐng)求頭信息 headers={??? 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'??? } #自定義請(qǐng)求對(duì)象,可以在該請(qǐng)求對(duì)象中添加自定義的請(qǐng)求頭信息 request = urllib.request.Request(url=url,headers=headers) #使用自定義請(qǐng)求對(duì)象發(fā)起請(qǐng)求 response = urllib.request.urlopen(request) data = response.read() with open('./周杰倫.html','wb') as fp:??? fp.write(data) print('寫入文件完畢')

? ? 5.攜帶參數(shù)的post請(qǐng)求:

? ? ? ? 案例:百度翻譯發(fā)起post請(qǐng)求

import urllib.request import urllib.parse #通過(guò)抓包工具抓取post請(qǐng)求的url post_url='https://fanyi.baidu.com/sug' #封裝post請(qǐng)求參數(shù) data={"kw":"dog" } data=urllib.parse.urlencode(data) #自定義請(qǐng)求頭信息字典 headers={??? "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36" } #自定義請(qǐng)求對(duì)象,然后將封裝好的post請(qǐng)求參數(shù)賦值給Requst方法的data參數(shù)。 #data參數(shù):用來(lái)存儲(chǔ)post請(qǐng)求的參數(shù) request=urllib.request.Request(post_url,data=data.encode(),headers=headers) #自定義的請(qǐng)求對(duì)象中的參數(shù)(data必須為bytes類型) response=urllib.request.urlopen(request) response.read()

三.urllib模塊的高級(jí)操作

? ? 1.代理

? ? ? - 什么是代理:代理就是第三方代替本體處理相關(guān)事務(wù)。例如:生活中的代理:代購(gòu),中介,微商......

  - 爬蟲中為什么需要使用代理?

   ? 一些網(wǎng)站會(huì)有相應(yīng)的反爬蟲措施,例如很多網(wǎng)站會(huì)檢測(cè)某一段時(shí)間某個(gè)IP的訪問(wèn)次數(shù),如果訪問(wèn)頻率太快以至于看起來(lái)不像正常訪客,它可能就會(huì)會(huì)禁止這個(gè)IP的訪問(wèn)。所以我們需要設(shè)置一些代理IP,每隔一段時(shí)間換一個(gè)代理IP,就算IP被禁止,依然可以換個(gè)IP繼續(xù)爬取。

 ? - 代理的分類:

    正向代理:代理客戶端獲取數(shù)據(jù)。正向代理是為了保護(hù)客戶端防止被追究責(zé)任。

    反向代理:代理服務(wù)器提供數(shù)據(jù)。反向代理是為了保護(hù)服務(wù)器或負(fù)責(zé)負(fù)載均衡。

import urllib.request import urllib.parse#1.創(chuàng)建處理器對(duì)象,在其內(nèi)部封裝代理ip和端口 handler=urllib.request.ProxyHandler(proxies={'http':'95.172.58.224:52608'}) #2.創(chuàng)建opener對(duì)象,然后使用該對(duì)象發(fā)起一個(gè)請(qǐng)求 opener=urllib.request.build_opener(handler)url='http://www.baidu.com/s?ie=UTF-8&wd=ip'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36', }request = urllib.request.Request(url, headers=headers)#使用opener對(duì)象發(fā)起請(qǐng)求,該請(qǐng)求對(duì)應(yīng)的ip即為我們?cè)O(shè)置的代理ip response = opener.open(request)with open('./daili.html','wb') as fp:fp.write(response.read())221import urllib.request2import urllib.parse34#1.創(chuàng)建處理器對(duì)象,在其內(nèi)部封裝代理ip和端口5handler=urllib.request.ProxyHandler(proxies={'http':'95.172.58.224:52608'})6#2.創(chuàng)建opener對(duì)象,然后使用該對(duì)象發(fā)起一個(gè)請(qǐng)求7opener=urllib.request.build_opener(handler)89url='http://www.baidu.com/s?ie=UTF-8&wd=ip'1011headers = {12 ? ?'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',13}1415request = urllib.request.Request(url, headers=headers)1617#使用opener對(duì)象發(fā)起請(qǐng)求,該請(qǐng)求對(duì)應(yīng)的ip即為我們?cè)O(shè)置的代理ip18response = opener.open(request)1920with open('./daili.html','wb') as fp:21 ? ?fp.write(response.read())22 ? ?

? ? 2.cookie

? ? ? ???引言:有些時(shí)候,我們?cè)谑褂门老x程序去爬取一些用戶相關(guān)信息的數(shù)據(jù)(爬取張三“人人網(wǎng)”個(gè)人主頁(yè)數(shù)據(jù))時(shí),如果使用之前requests模塊常規(guī)操作時(shí),往往達(dá)不到我們想要的目的,例如:

import urllib.request import urllib.parse #指定url url = 'http://www.renren.com/289676607/profile' #自定義請(qǐng)求頭信息 headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',} #自定義請(qǐng)求對(duì)象 request = urllib.request.Request(url=url,headers=headers) #發(fā)起請(qǐng)求 response = urllib.request.urlopen(request)with open('./renren.html','w') as fp:fp.write(response.read().decode())151import urllib.request2import urllib.parse3#指定url4url = 'http://www.renren.com/289676607/profile'5#自定義請(qǐng)求頭信息6headers={7 ? ?'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',8 ? }9#自定義請(qǐng)求對(duì)象10request = urllib.request.Request(url=url,headers=headers)11#發(fā)起請(qǐng)求12response = urllib.request.urlopen(request)1314with open('./renren.html','w') as fp:15 ? ?fp.write(response.read().decode())

【注意】上述代碼中,我們爬取到的是登錄首頁(yè)面,而不是張三的個(gè)人主頁(yè)也面。why?首先我們來(lái)回顧下cookie的相關(guān)概念及作用

? ? ? ? - cookie概念:當(dāng)用戶通過(guò)瀏覽器首次訪問(wèn)一個(gè)域名時(shí),訪問(wèn)的web服務(wù)器會(huì)給客戶端發(fā)送數(shù)據(jù),以保持web服務(wù)器與客戶端之間的狀態(tài)保持,這些數(shù)據(jù)就是cookie。

? ? ? ? -?cookie作用:我們?cè)跒g覽器中,經(jīng)常涉及到數(shù)據(jù)的交換,比如你登錄郵箱,登錄一個(gè)頁(yè)面。我們經(jīng)常會(huì)在此時(shí)設(shè)置30天內(nèi)記住我,或者自動(dòng)登錄選項(xiàng)。那么它們是怎么記錄信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服務(wù)器設(shè)置的,保存在瀏覽器中,但HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,在數(shù)據(jù)交換完畢后,服務(wù)器端和客戶端的鏈接就會(huì)關(guān)閉,每次交換數(shù)據(jù)都需要建立新的鏈接。就像我們?nèi)コ匈I東西,沒有積分卡的情況下,我們買完?yáng)|西之后,超市沒有我們的任何消費(fèi)信息,但我們辦了積分卡之后,超市就有了我們的消費(fèi)信息。cookie就像是積分卡,可以保存積分,商品就是我們的信息,超市的系統(tǒng)就像服務(wù)器后臺(tái),http協(xié)議就是交易的過(guò)程。?

? ? ? ? - 經(jīng)過(guò)cookie的相關(guān)介紹,其實(shí)你已經(jīng)知道了為什么上述案例中爬取到的不是張三個(gè)人信息頁(yè),而是登錄頁(yè)面。那應(yīng)該如何抓取到張三的個(gè)人信息頁(yè)呢?

  思路:

    1.我們需要使用爬蟲程序?qū)θ巳司W(wǎng)的登錄時(shí)的請(qǐng)求進(jìn)行一次抓取,獲取請(qǐng)求中的cookie數(shù)據(jù)

    2.在使用個(gè)人信息頁(yè)的url進(jìn)行請(qǐng)求時(shí),該請(qǐng)求需要攜帶 1 中的cookie,只有攜帶了cookie后,服務(wù)器才可識(shí)別這次請(qǐng)求的用戶信息,方可響應(yīng)回指定的用戶信息頁(yè)數(shù)據(jù)

cookiejar對(duì)象:- 作用:自動(dòng)保存請(qǐng)求中的cookie數(shù)據(jù)信息- 注意:必須和handler和opener一起使用 cookiejar使用流程:- 創(chuàng)建一個(gè)cookiejar對(duì)象import http.cookiejarcj = http.cookiejar.CookieJar()- 通過(guò)cookiejar創(chuàng)建一個(gè)handlerhandler = urllib.request.HTTPCookieProcessor(cj)- 根據(jù)handler創(chuàng)建一個(gè)openeropener = urllib.request.build_opener(handler)- 使用opener.open方法去發(fā)送請(qǐng)求,且將響應(yīng)中的cookie存儲(chǔ)到openner對(duì)象中,后續(xù)的請(qǐng)求如果使用openner發(fā)起,則請(qǐng)求中就會(huì)攜帶了cookie1cookiejar對(duì)象:2 ? ?- 作用:自動(dòng)保存請(qǐng)求中的cookie數(shù)據(jù)信息3 ? ?- 注意:必須和handler和opener一起使用4cookiejar使用流程:5 ? ?- 創(chuàng)建一個(gè)cookiejar對(duì)象6 ? ? import http.cookiejar7 ? ? cj = http.cookiejar.CookieJar()8 ? ?- 通過(guò)cookiejar創(chuàng)建一個(gè)handler9 ? ? handler = urllib.request.HTTPCookieProcessor(cj)10 ? ?- 根據(jù)handler創(chuàng)建一個(gè)opener11 ? ? opener = urllib.request.build_opener(handler)12 ? ?- 使用opener.open方法去發(fā)送請(qǐng)求,且將響應(yīng)中的cookie存儲(chǔ)到openner對(duì)象中,后續(xù)的請(qǐng)求如果使用openner發(fā)起,則請(qǐng)求中就會(huì)攜帶了cookie

使用cookiejar實(shí)現(xiàn)爬取人人網(wǎng)個(gè)人主頁(yè)頁(yè)面數(shù)據(jù):

#使用cookiejar實(shí)現(xiàn)人人網(wǎng)的登陸

import urllib.request import urllib.parse import http.cookiejar cj = http.cookiejar.CookieJar() #請(qǐng)求中的cookie會(huì)自動(dòng)存儲(chǔ)到cj對(duì)象中 #創(chuàng)建處理器對(duì)象(攜帶cookiejar對(duì)象的) handler=urllib.request.HTTPCookieProcessor(cj) #創(chuàng)建opener對(duì)象 (攜帶cookiejar對(duì)象) opener=urllib.request.build_opener(handler)#要讓cookiejar獲取請(qǐng)求中的cookie數(shù)據(jù)值 url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=201873958471' #自定義一個(gè)請(qǐng)求對(duì)象,讓該對(duì)象作為opener的open函數(shù)中的參數(shù) data={"email":"www.zhangbowudi@qq.com", "icode":"", "origURL":"http://www.renren.com/home","domain":"renren.com", "key_id":"1", "captcha_type":"web_login","password":"40dc65b82edd06d064b54a0fc6d202d8a58c4cb3d2942062f0f7dd128511fb9b", "rkey":"41b44b0d062d3ca23119bc8b58983104",'f':"https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DpPKf2680yRLbbZMVdntJpyPGwrSk2BtpKlEaAuKFTsW%26wd%3D%26eqid%3Deee20f380002988c000000025b7cbb80" } data=urllib.parse.urlencode(data).encode() request=urllib.request.Request(url,data=data) opener.open(request)#獲取當(dāng)前用戶的二級(jí)子頁(yè)面 s_url='http://www.renren.com/289676607/profile' #該次請(qǐng)求中就攜帶了cookie resonse=opener.open(s_url)with open('./renren.html','wb') as fp:fp.write(resonse.read())351import urllib.request2import urllib.parse3import http.cookiejar4cj = http.cookiejar.CookieJar() #請(qǐng)求中的cookie會(huì)自動(dòng)存儲(chǔ)到cj對(duì)象中5#創(chuàng)建處理器對(duì)象(攜帶cookiejar對(duì)象的)6handler=urllib.request.HTTPCookieProcessor(cj)7#創(chuàng)建opener對(duì)象 (攜帶cookiejar對(duì)象)8opener=urllib.request.build_opener(handler)910#要讓cookiejar獲取請(qǐng)求中的cookie數(shù)據(jù)值11url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=201873958471'12#自定義一個(gè)請(qǐng)求對(duì)象,讓該對(duì)象作為opener的open函數(shù)中的參數(shù)13data={14 ? ?"email":"www.zhangbowudi@qq.com",15"icode":"",16"origURL":"http://www.renren.com/home",17 ? ?"domain":"renren.com",18"key_id":"1",19"captcha_type":"web_login",20 ? ?"password":"40dc65b82edd06d064b54a0fc6d202d8a58c4cb3d2942062f0f7dd128511fb9b",21"rkey":"41b44b0d062d3ca23119bc8b58983104",22 ?23 'f':"https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DpPKf2680yRLbbZMVdntJpyPGwrSk2BtpKlEaAuKFTsW%26wd%3D%26eqid%3Deee20f380002988c000000025b7cbb80"24}25data=urllib.parse.urlencode(data).encode()26request=urllib.request.Request(url,data=data)27opener.open(request)2829#獲取當(dāng)前用戶的二級(jí)子頁(yè)面30s_url='http://www.renren.com/289676607/profile'31#該次請(qǐng)求中就攜帶了cookie32resonse=opener.open(s_url)3334with open('./renren.html','wb') as fp:35 ? ?fp.write(resonse.read())

總結(jié)

以上是生活随笔為你收集整理的urllib模块学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。