我使用的编辑器是Idle, 安装好Python3后这个编辑器也安装好了, 小巧轻便, 按一个F5就能运行并显示结果. 代码如下:
1 2 3 4 5 6 7 | #encoding:UTF-8 import urllib.request
url = "http://www.baidu.com" data = urllib.request.urlopen(url).read() data = data.decode('UTF-8') print(data) |
urllib.request是一个库, 隶属urllib. 点此打开官方相关文档. 官方文档应该怎么使用呢? 首先点刚刚提到的这个链接进去的页面有urllib的几个子库, 我们暂时用到了request, 所以我们先看urllib.request部分. 首先看到的是一句话介绍这个库是干什么用的:
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.
然后把我们代码中用到的urlopen()函数部分阅读完.
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False)
重点部分是返回值, 这个函数返回一个 http.client.HTTPResponse 对象, 这个对象又有各种方法, 比如我们用到的read()方法, 这些方法都可以根据官方文档的链接链过去. 根据官方文档所写, 我用控制台运行完毕上面这个程序后, 又继续运行如下代码, 以更熟悉这些乱七八糟的方法是干什么的.
>>> a = urllib.request.urlopen(full_url)
>>> type(a)
<class 'http.client.HTTPResponse'>>>> a.geturl()
'http://www.baidu.com/s?word=Jecvay'>>> a.info()
<http.client.HTTPMessage object at 0x03272250>>>> a.getcode()
200
用Python简单处理URL
如果要抓取百度上面搜索关键词为Jecvay Notes的网页, 则代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 | import urllib import urllib.request
data={} data['word']='Jecvay Notes'
url_values=urllib.parse.urlencode(data) url="http://www.baidu.com/s?" full_url=url+url_values
data=urllib.request.urlopen(full_url).read() data=data.decode('UTF-8') print(data) |
data是一个字典, 然后通过urllib.parse.urlencode()来将data转换为 'word=Jecvay+Notes'的字符串, 最后和url合并为full_url, 其余和上面那个最简单的例子相同. 关于urlencode(), 同样通过官方文档学习一下他是干什么的. 通过查看
- urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None)
- urllib.parse.quote_plus(string, safe='', encoding=None, errors=None)
大概知道他是把一个通俗的字符串, 转化为url格式的字符串.