亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲入門之 urllib庫

發布時間:2020-07-05 22:17:03 來源:網絡 閱讀:562 作者:ckllf 欄目:編程語言

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

  二、Python2和Python3的urllib庫的區別:

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

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

  3. 區別:

  在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):它可以創建一個表示遠程url的類文件對象,然后我們可以像對本地文件一樣,用同樣的方法去操作這個類文件對象以此獲取遠程數據。

  import urllib.request

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

  # response:是一個文件

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

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

  返回結果===》

  url:遠程數據的路徑,一般是網址;

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

  proxies用于設置代理;

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

  (I)read():讀取相應內容,內容是字節類型;

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

  示例:

  print(response.geturl())

  結果:

  https://www.baidu.com/

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

  示例:

  print(response.getheaders())

  結果:

  [('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():獲取狀態碼

  示例:

  print(response.getcode())

  結果:

  200

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

  示例:

  print(response.readlines())

  結果:

  [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這種返回是“字節類型(二進制)”都要進行解碼才能顯示出來

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

  示例:鄭州人流醫院 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())

  結果:

  200

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

  示例:

  import urllib.parse

  url = "小編是大帥哥!"

  result = urllib.parse.quote(url)

  print(result)

  結果:

  %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解碼函數,將%xxx進行轉化為中文

  示例:

  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)

  結果:

  小編是大帥哥!

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

  示例:

  import urllib.parse

  data = {

  'name': 'Alien',

  'age': '20',

  'address': 'Chinese'

  }

  result = urllib.parse.urlencode(data)

  print(result)

  結果:

  name=Alien&age=20&address=Chinese

  四、字符串與二進制之間的轉換:

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

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

  要是傳encoding的值大多數也是“gbk”

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

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邛崃市| 浪卡子县| 伊通| 巴里| 定边县| 广东省| 青龙| 介休市| 确山县| 绥中县| 双流县| 陕西省| 临泉县| 千阳县| 余干县| 河池市| 通许县| 纳雍县| 修文县| 隆昌县| 曲麻莱县| 乌海市| 墨脱县| 栖霞市| 淮安市| 杭锦旗| 尼木县| 京山县| 铅山县| 沧源| 丰镇市| 陇西县| 额济纳旗| 天气| 太白县| 辽中县| 华亭县| 德清县| 宁南县| 迁西县| 武义县|