真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python爬蟲入門之urllib庫

一、urllib庫:模擬瀏覽器發(fā)送請求的庫,python自帶,無需安裝;

創(chuàng)新互聯(lián)建站長期為上千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為桂林企業(yè)提供專業(yè)的成都網(wǎng)站設計、成都網(wǎng)站制作,桂林網(wǎng)站改版等技術服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

二、Python2和Python3的urllib庫的區(qū)別:

1. urllib是python提供的一個用于操作url的模塊。

2. 在python2中,有urllib庫和urllib2庫,在python3中,urllib2合并到urllib庫中,我們爬取網(wǎng)頁的時候,經(jīng)常用到這個庫,升級合并后,模塊中包的位置變化的地方較多。

3. 區(qū)別:

在python2中使用import urllib2————對應的,在python3中會使用import urllib.request,urllib.error;

在python2中使用import urllib————對應的,在python3中會使用import urllib.request,urllib.error,urllib.parse;

在python2中使用import urlparse————對應的,在python3中會使用import urllib.parse;

在python2中使用urllib2.urlopen————對應的,在python3中會使用urllib.request.urlopen;

在python2中使用urllib.urlencode————對應的,在python3中會使用urllib.parse.urlencode;

在python2中使用urllib.quote————對應的,在python3中會使用urllib.request.quote;

在python2中使用cookielib.CookieJar————對應的,在python3中會使用http.CookieJar;

在python2中使用urllib2.Request————對應的,在python3中會使用urllib.request.Request

以上就是urllib相關模塊從python2到python3的常見一些變化

三、urllib兩個常用模塊:urllib.request,urllib.parse

1. urllib.request.urlopen(url, data=None, proxies=None):它可以創(chuàng)建一個表示遠程url的類文件對象,然后我們可以像對本地文件一樣,用同樣的方法去操作這個類文件對象以此獲取遠程數(shù)據(jù)。

import urllib.request

url = "https://www.baidu.com/"

# response:是一個文件

response = urllib.request.urlopen(url=url)

print(response.read().decode())

返回結(jié)果===》

url:遠程數(shù)據(jù)的路徑,一般是網(wǎng)址;

data:以post方式提交到url的數(shù)據(jù),如果要傳必須傳 bytes(字節(jié)流)類型的,如果是一個字典,可以先用 urllib.parse 模塊里的 urlencode() 編碼;

proxies用于設置代理;

1. urlopen返回 一個類文件對象(fd),它提供了如下方法:

(I)read():讀取相應內(nèi)容,內(nèi)容是字節(jié)類型;

(II)geturl():獲取請求的url

示例:

print(response.geturl())

結(jié)果:

https://www.baidu.com/

(III)getheaders():獲取頭部信息,列表里面有元組

示例:

print(response.getheaders())

結(jié)果:

[('Accept-Ranges', 'bytes'), ('Cache-Control', 'no-cache'), ('Content-Length', '227'), ('Content-Type', 'text/html'), ('Date', 'Sat, 30 Nov 2019 15:32:47 GMT'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('Pragma', 'no-cache'), ('Server', 'BWS/1.1'), ('Set-Cookie', 'BD_NOT_HTTPS=1; path=/; Max-Age=300'), ('Set-Cookie', 'BIDUPSID=52DFB72BEBE10DAD15531561E0516914; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'PSTM=1575127967; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BAIDUID=52DFB72BEBE10DADB9398376B7470E3A:FG=1; max-age=31536000; expires=Sun, 29-Nov-20 15:32:47 GMT; domain=.baidu.com; path=/; version=1; comment=bd'), ('Strict-Transport-Security', 'max-age=0'), ('Traceid', '1575127967028891188210707054848444292954'), ('X-Ua-Compatible', 'IE=Edge,chrome=1'), ('Connection', 'close')]

(IV)getcode():獲取狀態(tài)碼

示例:

print(response.getcode())

結(jié)果:

200

(V)readlines():按行讀取,返回列表,都是字節(jié)類型

示例:

print(response.readlines())

結(jié)果:

[b'\r\n', b'\r\n', b'\t\r\n', b'\r\n', b'\r\n', b'\t\r\n', b'\r\n', b'']

注釋:“\b”在Python中表示二進制

【注意】像1和5這種返回是“字節(jié)類型(二進制)”都要進行解碼才能顯示出來

2. urllib.request.Request(url, headers, data):參數(shù)和urllib.request.urlopen()函數(shù)一樣,一個請求不僅僅只有url,還要有Headers等信息,這時我們把Request()用于包裝請求頭,返回一個請求頭,可以作為urllib.request.urlopen()的參數(shù)。

示例:鄭州人流醫(yī)院 http://mobile.zzzzyy120.com/

import urllib.request

headers = {

'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '

'AppleWebKit/537.36 (KHTML, like Ge'

'cko) Chrome/71.0.3578.98 Safari/537.36'

}

url = "https://www.baidu.com/"

request = urllib.request.Request(url=url, headers=headers)

response = urllib.request.urlopen(request)

print(response.getcode())

結(jié)果:

200

3. urllib.parse.quote():url編碼函數(shù),將中文進行轉(zhuǎn)化為%xxx

示例:

import urllib.parse

url = "小編是大帥哥!"

result = urllib.parse.quote(url)

print(result)

結(jié)果:

%E5%B0%8F%E7%BC%96%E6%98%AF%E5%A4%A7%E5%B8%85%E5%93%A5%EF%BC%81

4. urllib.parse.unquote():url解碼函數(shù),將%xxx進行轉(zhuǎn)化為中文

示例:

import urllib.parse

string = "%E5%B0%8F%E7%BC%96%E6%98%AF%E5%A4%A7%E5%B8%85%E5%93%A5%EF%BC%81"

result = urllib.parse.unquote(string)

print(result)

結(jié)果:

小編是大帥哥!

5. urllib.parse.urlencode():給一個字典,將字典拼接為query_string,并且實現(xiàn)了編碼的功能

示例:

import urllib.parse

data = {

'name': 'Alien',

'age': '20',

'address': 'Chinese'

}

result = urllib.parse.urlencode(data)

print(result)

結(jié)果:

name=Alien&age=20&address=Chinese

四、字符串與二進制之間的轉(zhuǎn)換:

encode(encoding=None):字符串 ===》二進制,參數(shù)encoding默認是“utf-8”;

decode(encoding=Node):二進制 ===》字符串,參數(shù)encoding默認是“utf-8”;

要是傳encoding的值大多數(shù)也是“gbk”

Python打開文件時也有編碼設置

open("文件名", "w", encoding='utf8')


標題名稱:Python爬蟲入門之urllib庫
URL標題:http://weahome.cn/article/iighhd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部