1. 程式人生 > >Python3模組詳解--老司機工具urllib模組詳解之urllib.request子模組

Python3模組詳解--老司機工具urllib模組詳解之urllib.request子模組

urllib模組中常見的模組就是urllib.request模組,對於這個模組我會深入講解一下,因為Python3.3.0之後,它的用法有了一個變化,在開發的過程中需要大家注意:

The urllib.request module defines functions and classes which help in opening URLs (mostly HTTP) in a complex world — basic and digest authentication, redirections, cookies and more.

官方對urllib.request的定位是:幫助在複雜的世界中開啟URL(主要是HTTP)的函式和類——基本和摘要身份驗證、重定向、cookie等等。

定義中提到“主要是HTTP”,目前只有一下協議:支援HTTP、FTP、本地檔案和資料的URL,所以對於HTTPS的請求,我們放在其他文章中去講解。

urllib.request模組預設定義了一下幾個函式:

urllib.request.urlopen(urldata=None[timeout]*cafile=Nonecapath=Nonecadefault=Falsecontext=None)

這個函式主要用來開啟一個url,url可以是一個字串,也可以是一個請求物件;

這個函式總是返回一下可以作為上下文的方法:

getURL()--返回檢索的資源的URL,通常用於確定是否遵循重定向;

info()--返回頁面的元資訊;

getcode()--返回響應的HTTP狀態程式碼;

read()--返回頁面元素。

程式碼如下:

import urllib.request
page=urllib.request.urlopen("http://www.zhihu.com/")
print(page.info())
print(page.getURL())
print(page.getcode())
print(page.read())
urllib.request.install_opener(opener)和urllib.request.build_opener([handler
])

兩個函式主要用於設定代理,這個不用多說,大家在做爬蟲的時候,多少都會用到代理IP的,程式碼如下:

步驟多為:(1)、準備代理IP或者請求頭;

(2)、利用urllib.request.build_opener()封裝代理IP或請求頭;

(3)、利用urllib.request.instanll_opener()安裝成全域性;

(4)、用urlopen()訪問網頁.

import urllib.request
proxy_support = urllib.request.ProxyHandler({'sock5': 'localhost:1080'})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
 
a = urllib.request.urlopen("http://www.zhihu.com/ ").read().decode("utf8")
print(a)
urllib.request.pathname2url(path)和urllib.request.url2pathname(path)

這兩個函式暫時還沒研究透,就不拿出來給大家了

urllib.request.getproxies()

這個幫助函式講一個scheme的字典返回給代理伺服器URL對映。

以下是從python2中移植的函式,官方文件上說,他們可能在未來的某個時間變得過時:

urllib.request.urlretrieve(urlfilename=Nonereporthook=Nonedata=None)

這個函式大家做爬蟲,特別是爬網頁的時候,應該是用的最多的,作用是講一個URL訪問的網路物件複製到本地,第二個引數用於制定本地檔案位置;

def getImage(html):
    reg=r'src="(.+?\.jpg)"'#正則表示式
    imgre=re.compile(reg)#將正則表示式編譯成一個正則表示式物件
    html = html.decode('utf-8')#python3中使用
    # imglist=reg.findall(imgre,html)
    imglist=re.findall(imgre,html)
    x=0
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl,'H:\picture\%s.jpg' %x)
        x += 1

urllib.request.urlcleanup()

這個函式用於清理之前呼叫urlretrieve()函式留下的臨時檔案。

這個子模組的函式介紹常用的就這麼多,以後會挑個時間對這個子模組的類進行分析。



相關推薦

Python3模組--司機工具urllib模組urllib.parse模組

This module defines a standard interface to break Uniform Resource Locator (URL) strings up in components (addressing scheme, network lo

Python3模組--司機工具urllib模組urllib.request模組

urllib模組中常見的模組就是urllib.request模組,對於這個模組我會深入講解一下,因為Python3.3.0之後,它的用法有了一個變化,在開發的過程中需要大家注意: The urllib

python3 2018分散式爬蟲教程 -3 urllib

1.urllib 庫 安裝命令: pip install urllib  urllib :Python內建的HTTP請求庫 # Python2 import urllib2 response = urllib2.urlopen('http://www.baidu.com')

Python3爬蟲學習筆記(1.urllib

1.什麼是爬蟲:略,到處都有講解。 雖然是入門,不過沒有Python基礎的同學看起來可能費勁,建議稍學下Python 之前學習前端知識也是為了能看懂HTML,便於爬蟲學習,建議瞭解下前端知識 2.re

pt-archiver歸檔工具的使用

pt-archiver使用之前的percona-toolkit工具集的使用博文裏面也寫到pt-archiver這個工具的用法,但是不夠深入全面。這裏補充完善下。註意:pt-archiver操作的表必須有主鍵。 查看幫助: perldoc pt-archiver Specify at least one of

mysql 客戶端工具參數

mysql 客戶端工具參數詳解客戶端工具:mysql,mysqladmin,mysqldump,mysqlcheck非客戶端類的管理工具:myisamchk,myisampackmysql命令提示符mysql> 等待輸入命令‘> 前面提供的‘未提供結束’”>`>—> 續航符/*

用Navicat工具將Excel中的數據導入Mysql中

tro edit http ges fda 數據導入 csv sql 成功 首先你需要準備一份有數據的Excel,PS: 表頭要與數據庫表中字段名對應:      然後 “文件--->另存為.csv 文件” 如果你的數據中帶有中文,那麽需要將CSV文

分區工具parted的及常用分區使用方法【轉】

ima nbsp 磁盤 很好 main adding ext3 當前 padding 來源:http://blog.51cto.com/zhangmingqian/1068779 分區工具parted的詳解及常用分區使用方法 一、 parted的用途

爬蟲(二):Urllib

lib lwp ces lin 設置 內置 col http測試 url 什麽是Urllib: python內置的HTTP請求庫 urllib.request : 請求模塊 urllib.error : 異常處理模塊 urllib.parse: url解析模塊 urllib

司機,了一下

python爬蟲;人工智能直接運行,拿走不送import requests as req from bs4 import BeautifulSoup import lxml import re import os import aiohttp import asyncio u="D:/test&qu

urllib

www. ID erro quest port 異常處理 http 基本 parse urllib庫是python內置的一個http請求庫 其實urllib庫不好用,沒有requests庫好用,下一篇文章再寫requests庫,requests庫是基於urllib庫實現的

當同時安裝Python2和Python3後,如何兼容並切換使用(比如pip使用)

err 完美解決 執行文件 class 需要 提示 改名 launcher 順序查找 由於歷史原因,Python有兩個大的版本分支,Python2和Python3,又由於一些庫只支持某個版本分支,所以需要在電腦上同時安裝Python2和Python3,因此如何讓兩個版

Linux監控工具vmstat命令

原帖地址:http://www.ha97.com/4512.html 一、前言 很顯然從名字中我們就可以知道vmstat是一個檢視虛擬記憶體(Virtual Memory)使用狀況的工具,但是怎樣通過vmstat來發現系統中的瓶頸呢?在回答這個問題前,還是讓我們回顧一下Linux

無線安全審計工具aircrack-ng

無線滲透試的工具有很多,在windows下和Linux下的工具各有千秋,因在windows下的工具基本都是圖形介面,操作起來比較直觀易懂,在此就不再做過多介紹,本方重點介紹在linux下的一種通用的方法。 首先講一下現行無線滲透試的一般方法和原理。 目前無線滲透

Python爬蟲系列-Urllib

Urllib庫詳解 Python內建的Http請求庫: * urllib.request 請求模組 * urllib.error 異常處理模組 * urllib.parse url解析模組 * urllib.robotparser robots.txt解析模組 #### 相比在python2基礎上的變化

python爬蟲urllib

什麼是Urllib Urllib是python內建的HTTP請求庫,中文文件如下:https://docs.python.org/3/library/urllib.html包括以下模組urllib.request 請求模組urllib.error 異常處理模組urllib.parse url解析模組urll

python3中pathlib庫的Path類的使用

原文連線   https://www.jb51.net/article/148789.htm   1.呼叫庫 ? 1

Systrace 分析效能工具使用方法

Systrace允許您在系統級別收集和檢查裝置上執行的所有程序的計時資訊。 它將來自Android核心的資料(例如CPU排程程式,磁碟活動和應用程式執行緒)組合起來,以生成HTML報告。 本篇文章主要介紹 Android 開發中的部分知識點,通過閱讀本篇文章,您將收穫以下內

Python3 如何優雅地使用正則表示式(一)

正則表示式介紹 正則表示式(Regular expressions 也稱為 REs,或 regexes 或 regex patterns)本質上是一個微小的且高度專業化的程式語言。它被嵌入到 Python 中,並通過 re 模組提供給程式猿使用。使用正則表示式,你需要指定一些規則來描述那些你

Python3 如何優雅地使用正則表示式(六)

上一篇:Python3 如何優雅地使用正則表示式(詳解五)   修改字串 我們已經介紹完如何對字元進行搜尋,接下來我們講講正則表示式如何修改字串。 正則表示式使用以下方法修改字串: 方法 用途 split(