python网络入门:urllib.request模块和urllib.urllib.parse模块

*************************************************
** 转发请注明原文,尊重原创
** 原文来自:blog.csdn.net/clark_xu 徐长亮的专栏
*************************************************

1 urllib.parse模块

Urllib.parse模块在urllib package中

引入


>>> from urllib import parse

Urllib.parse模块的方法


>>> dir(parse)

[‘DefragResult‘, ‘DefragResultBytes‘, ‘MAX_CACHE_SIZE‘, ‘ParseResult‘, ‘ParseResultBytes‘, ‘Quoter‘, ‘ResultBase‘, ‘SplitResult‘, ‘SplitResultBytes‘, ‘_ALWAYS_SAFE‘, ‘_ALWAYS_SAFE_BYTES‘, ‘_DefragResultBase‘, ‘_NetlocResultMixinBase‘, ‘_NetlocResultMixinBytes‘, ‘_NetlocResultMixinStr‘, ‘_ParseResultBase‘, ‘_ResultMixinBytes‘, ‘_ResultMixinStr‘, ‘_SplitResultBase‘, ‘__all__‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘_asciire‘, ‘_coerce_args‘, ‘_decode_args‘, ‘_encode_result‘, ‘_hexdig‘, ‘_hextobyte‘, ‘_hostprog‘, ‘_implicit_encoding‘, ‘_implicit_errors‘, ‘_noop‘, ‘_parse_cache‘, ‘_portprog‘, ‘_safe_quoters‘, ‘_splitnetloc‘, ‘_splitparams‘, ‘_typeprog‘, ‘clear_cache‘, ‘collections‘, ‘namedtuple‘, ‘non_hierarchical‘, ‘parse_qs‘, ‘parse_qsl‘, ‘quote‘, ‘quote_from_bytes‘, ‘quote_plus‘, ‘re‘, ‘scheme_chars‘, ‘splitattr‘, ‘splithost‘, ‘splitnport‘, ‘splitpasswd‘, ‘splitport‘, ‘splitquery‘, ‘splittag‘, ‘splittype‘, ‘splituser‘, ‘splitvalue‘, ‘sys‘, ‘to_bytes‘, ‘unquote‘, ‘unquote_plus‘, ‘unquote_to_bytes‘, ‘unwrap‘, ‘urldefrag‘, ‘urlencode‘, ‘urljoin‘, ‘urlparse‘, ‘urlsplit‘, ‘urlunparse‘, ‘urlunsplit‘, ‘uses_fragment‘, ‘uses_netloc‘, ‘uses_params‘, ‘uses_query‘, ‘uses_relative‘]

Urllib.parse模块urlparse方法,将url分拆为6个部件


‘http://blog.csdn.net/xu_clark‘

>>> parse.urlparse(url)

ParseResult(scheme=‘http‘, netloc=‘blog.csdn.net‘, path=‘/xu_clark‘, params=‘‘, query=‘‘, fragment=‘‘)

Urllib.parse模块urljoin方法,

urljoin(base, url, allow_fragments=True)

Join a base URL and a possibly relative URL to form an absolute

interpretation of the latter.

2 urllib.request模块

方法


>>> dir(request)

[‘AbstractBasicAuthHandler‘, ‘AbstractDigestAuthHandler‘, ‘AbstractHTTPHandler‘, ‘BaseHandler‘, ‘CacheFTPHandler‘, ‘ContentTooShortError‘, ‘DataHandler‘, ‘FTPHandler‘, ‘FancyURLopener‘, ‘FileHandler‘, ‘HTTPBasicAuthHandler‘, ‘HTTPCookieProcessor‘, ‘HTTPDefaultErrorHandler‘, ‘HTTPDigestAuthHandler‘, ‘HTTPError‘, ‘HTTPErrorProcessor‘, ‘HTTPHandler‘, ‘HTTPPasswordMgr‘, ‘HTTPPasswordMgrWithDefaultRealm‘, ‘HTTPPasswordMgrWithPriorAuth‘, ‘HTTPRedirectHandler‘, ‘HTTPSHandler‘, ‘MAXFTPCACHE‘, ‘OpenerDirector‘, ‘ProxyBasicAuthHandler‘, ‘ProxyDigestAuthHandler‘, ‘ProxyHandler‘, ‘Request‘, ‘URLError‘, ‘URLopener‘, ‘UnknownHandler‘, ‘__all__‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘__version__‘, ‘_cut_port_re‘, ‘_ftperrors‘, ‘_have_ssl‘, ‘_localhost‘, ‘_noheaders‘, ‘_opener‘, ‘_parse_proxy‘, ‘_proxy_bypass_macosx_sysconf‘, ‘_randombytes‘, ‘_safe_gethostbyname‘, ‘_thishost‘, ‘_url_tempfiles‘, ‘addclosehook‘, ‘addinfourl‘, ‘base64‘, ‘bisect‘, ‘build_opener‘, ‘collections‘, ‘contextlib‘, ‘email‘, ‘ftpcache‘, ‘ftperrors‘, ‘ftpwrapper‘, ‘getproxies‘, ‘getproxies_environment‘, ‘getproxies_registry‘, ‘hashlib‘, ‘http‘, ‘install_opener‘, ‘io‘, ‘localhost‘, ‘noheaders‘, ‘os‘, ‘parse_http_list‘, ‘parse_keqv_list‘, ‘pathname2url‘, ‘posixpath‘, ‘proxy_bypass‘, ‘proxy_bypass_environment‘, ‘proxy_bypass_registry‘, ‘quote‘, ‘re‘, ‘request_host‘, ‘socket‘, ‘splitattr‘, ‘splithost‘, ‘splitpasswd‘, ‘splitport‘, ‘splitquery‘, ‘splittag‘, ‘splittype‘, ‘splituser‘, ‘splitvalue‘, ‘ssl‘, ‘sys‘, ‘tempfile‘, ‘thishost‘, ‘time‘, ‘to_bytes‘, ‘unquote‘, ‘unquote_to_bytes‘, ‘unwrap‘, ‘url2pathname‘, ‘urlcleanup‘, ‘urljoin‘, ‘urlopen‘, ‘urlparse‘, ‘urlretrieve‘, ‘urlsplit‘, ‘urlunparse‘, ‘warnings‘]

Urllib.request.urlopen方法;

Help on function urlopen in module urllib.request:

urlopen(url, data=None, timeout=<object object at 0x00168D70>, *, cafile=None, capath=None, cadefault=False, context=None)

http请求的get方法:

向web服务器发送的请求字符串(编码键值或引用)是urlstr的一部分

http请求的post方法:

请求的字符串(编码键值或引用)应该放在postQueryData变量中

如果http请求连接成功,返回一个文件类型对象(句柄)

句柄支持read(),readline(),readlines(),close(),fileno()方法,info()返回http请求文件的类型头文件,geturl考虑了url跳转,返回最后的url


>>> url=‘http://www.csdn.net/‘

>>> f=request.urlopen(url)

>>> f.geturl()

‘http://www.csdn.net/‘

>>> f.info()

<http.client.HTTPMessage object at 0x0301F2D0>

>>> f.readline()

b‘<!DOCTYPE HTML>\n‘

>>> f.readline()

b‘<html>\n‘

>>> f.readline()

b‘<head>\n‘

>>> f.close()

>>>

2.1 urllib.request.urlretrieve

将html下载获取到本地磁盘一个临时文件中

urlretrieve(url, filename=None, reporthook=None, data=None)

Retrieve a URL into a temporary location on disk.

Requires a URL argument. If a filename is passed, it is used as

the temporary file location. The reporthook argument should be

a callable that accepts a block number, a read size, and the

total file size of the URL target. The data argument should be

valid URL encoded data.

If a filename is passed and the URL points to a local resource,

the result is a copy from local file to new file.

Returns a tuple containing the path to the newly created

data file as well as the resulting HTTPMessage object.


>>> filename1=r‘D:\temp.html‘

>>> request1=request.urlretrieve(url,filename=filename1)

>>> request1[0]

‘D:\\temp.html‘

>>> request1[1]

<http.client.HTTPMessage object at 0x0301FF90>

测试发现:下载的D:\temp.html包括图片等元素,较完整的下载

http.client.HTTPMessage对象的使用:

2.2 安全套接字层SSL

(1)urllib.request.ssl

(2)poplib.ssl

>>> help(poplib.ssl)

Help on module ssl:

NAME

ssl - This module provides some more Pythonic support for SSL.

Object types:

SSLSocket -- subtype of socket.socket which does SSL over the socket

(3)smtplib.ssl

>>> from smtplib import ssl

2.3 基础认证处理器request.HTTPBasicAuthHandler

(1)Builtins.object

class object

|  The most base type

(2)urllib.request.BaseHandler

class BaseHandler(builtins.object)

|  Methods defined here:

|  __lt__(self, other)

|      Return self<value.

|  add_parent(self, parent)

|  close(self)

(3)urllib.request.AbstractBasicAuthHandler

class AbstractBasicAuthHandler(builtins.object)

|  Methods defined here:

|  __init__(self, password_mgr=None)

|      Initialize self.  See help(type(self)) for accurate signature.

|  http_error_auth_reqed(self, authreq, host, req, headers)

|  http_request(self, req)

|  http_response(self, req, response)

|  https_response = http_response(self, req, response)

|  retry_http_basic_auth(self, host, req, realm)

(4)request.HTTPBasicAuthHandler

class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler)

|  Method resolution order:

|      HTTPBasicAuthHandler

|      AbstractBasicAuthHandler

|      BaseHandler

|      builtins.object

|  Methods defined here:

|  http_error_401(self, req, fp, code, msg, headers)

|  ----------------------------------------------------------------------

|  Data and other attributes defined here:

|  auth_header = ‘Authorization‘

|  ----------------------------------------------------------------------

|  Methods inherited from AbstractBasicAuthHandler:

|  __init__(self, password_mgr=None)

|      Initialize self.  See help(type(self)) for accurate signature.

|  http_error_auth_reqed(self, authreq, host, req, headers)

时间: 2024-10-26 10:29:53

python网络入门:urllib.request模块和urllib.urllib.parse模块的相关文章

python爬虫入门(1)-urllib模块

作用:用于读取来自网上(服务器上)的数据 基本方法:urllib.request.urlopen(url,data=None,[]timeout]*,cafile=None,cadefault=False,context=None) url:需要打开的网址 data:Post提交的数据 timeout:设置网站的访问超时时间 示例1:获取页面 import urllib.request response = urllib.request.urlopen("http://www.fishc.com

Python 3.X 要使用urllib.request 来抓取网络资源。转

Python 3.X 要使用urllib.request 来抓取网络资源. 最简单的方式: #coding=utf-8 import urllib.request response = urllib.request.urlopen('http://python.org/') buff = response.read() #显示 html = buff.decode("utf8") response.close() print(html) 使用Request的方式: #coding=ut

Python开发【模块】:Urllib(二)

Urllib实战 1.爬取糗事百科中段子和用户名: 代码实例: # 爬取网站页面内容 import re import urllib.request url = 'https://www.qiushibaike.com/8hr/page/%s/?s=4991994' headers =('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029

爬虫小探-Python3 urllib.request获取页面数据

使用Python3 urllib.request中的Requests()和urlopen()方法获取页面源码,并用re正则进行正则匹配查找需要的数据. #forex.py#coding:utf-8 ''' urllib.request.urlopen() function in Python 3 is equivalent to urllib2.urlopen() in Python2 urllib.request.Request() function in Python 3 is equiva

笔记之Python网络数据采集

笔记之Python网络数据采集 非原创即采集 一念清净, 烈焰成池, 一念觉醒, 方登彼岸 网络数据采集, 无非就是写一个自动化程序向网络服务器请求数据, 再对数据进行解析, 提取需要的信息 通常, 有api可用, api会比写网络爬虫程序来获取数据更加方便. Part1 创建爬虫 Chapter1 初建网络爬虫 一旦你开始采集网络数据, 就会感受到浏览器为我们所做的所有细节, 它解释了所有的html, css, JavaScript 网络浏览器是一个非常有用的应用, 它创建信息的数据包, 发送

Python NLP入门教程

本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库.NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库. 什么是NLP? 简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务. 这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别.语音翻译.理解完整的句子.理解匹配词的同义词,以及生成语法正确完整句子和段落. 这并不是NLP能做的所有事情. NLP实现 搜索引擎: 比如谷歌,Yahoo等.谷歌搜索引擎知道

《Python网络数据采集》读书笔记(一)

思考"网络爬虫"时通常的想法: ? 通过网站域名获取 HTML 数据 ? 根据目标信息解析数据 ? 存储目标信息 ? 如果有必要,移动到另一个网页重复这个过程 当网络浏览器遇到一个标签时,比如<img src="cuteKitten.jpg">,会向服务器发起另一个请求,以获取cuteKitten.jpg文件中的数据为用户充分渲染网页.但是,我们的Python程序没有返回并向服务器请求多个文件的逻辑,它只能读取我们已经请求的单个HTML文件. 1.初识u

Python网络爬虫:爬取古诗文中的某个制定诗句来实现搜索

python编译练习,为了将自己学习过的知识用上,自己找了很多资料.所以想做一个简单的爬虫,代码不会超过60行.主要用于爬取的古诗文网站没有什么限制而且网页排布很规律,没有什么特别的东西,适合入门级别的爬虫. 抓取目标站点的准备工作 Python的版本是:3.4.3. 爬取的目标是: 古诗文网(www.xzslx.net) 随意打开一个古诗文网的古诗页面,查看它的网页地址就能看到,古诗的地址基本是 "www.xzslx.net/shi/+ id + .html" 构成,如下图: 然后对

Python爬虫入门这一篇就够了

何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本.万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息. 爬虫三要素 抓取 分析 存储 基础的抓取操作 1.urllib在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2.只能通过urllib进行操作 import urllib.request response = urllib.request.urlopen(