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
(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=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
(url, filename=None, reporthook=None, data=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(