Python 3.x 标准库 urllib 提供了 rullib.request,urllib.response,urllib.parse 和 urllib.error 4 个模块, 很好地支持了网页内容读取功能.
下面的代码演示了如何读取并显示指定网页的内容.
- import urllib.request
- fp = urllib.request.urlopen(r'http://www.baidu.com')
- print(fp.read().decode()) #读取了返回 html
- fp.close()
下面的代码演示了如何使用 GET 方法读取并显示指定 URL 的内容.
- import urllib.request
- import urllib.parse
- params = urllib.parse.urlencode({'spam':1,'eggs':2,'bacon':0})
- url = r'http://www.baidu.com%s'%params
- with urllib.request.urlopen(url) as f:
- print(f.read().decode('utf-8'))
下面的代码演示了如何使用 POST 方法提交参数并读取指定页面内容.
- import urllib.request
- import urllib.parse
- data = urllib.parse.urlencode({'spam':1,'eggs':2,'bacon':0})
- data = data.encode('ascii')
- with urllib.request.urlopen(r'http://www.baidu.com',data) as f:
- print(f.read().decode('utf-8'))
下面的代码演示了如何使用 HTTP 代理访问指定网页.
- import urllib.request
- proxies = {'heet':'http://proxy.example.com:8080/'}
- opener = urllib.request.FancyURLopener(proxies)
- with opener.open('http://www.python.ory') as f:
- f.read().decode('utf-8')
在 IDLE 或者 Python 程序中使用下面的代码调用浏览器打开指定网页:
- import webbrowser
- webbrowser.open('www.baidu.com')
最后, 标准库 urllib.parse import urlparse 提供了域名解析的功能, 支持 RUL 的拆分与合并以及相对地址到绝对地址的转换.
- from urllib.parse import urlparse
- o = urlparse('http://www.cwi.nl:80/~guido/Python.html')
- print(o.port) #80
- print(o.hostname) #www.cwi.nl
- print(o) #ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/~guido/Python.html', params='', query='', fragment='')
- print(urlparse('www.cwi.nl:80/~guido/Python.html')) #ParseResult(scheme='www.cwi.nl', netloc='', path='80/~guido/Python.html', params='', query='', fragment='')
- from urllib.parse import urljoin
- print(urljoin('http://www.cwi.nl:80/~guido/Python.html','FAQ.html')) #http://www.cwi.nl:80/~guido/FAQ.html
- print(urljoin('http://www.cwi.nl:80/~guido/Python.html','//www.python.org/~guido')) #http://www.python.org/~guido
- from urllib.parse import urlsplit
- url = r'https://docs.python.org/3/library/urllib.parse.html'
- r1=urlsplit(url)
- print(r1) #SplitResult(scheme='https', netloc='docs.python.org', path='/3/library/urllib.parse.html', query='', fragment='')
- print(r1.geturl()) #https://docs.python.org/3/library/urllib.parse.html
来源: http://www.bubuko.com/infodetail-2585278.html