技术Ethical Hackers技术教程

Python爬虫学习(二)urllib基础使用

2017-08-16  本文已影响1228人  弃用中

在开始urllib库的学习之前,推荐先阅读一下:HTTP协议(一)之HTTP协议详解 这篇文章。

得到网页内容

先上一小段代码:

import urllib.request

html = urllib.request.urlopen('http://www.baidu.com').read().decode('utf-8')
print(html)

运行后的结果如下:

没错,就这么一小段代码,已经可以获得百度首页的内容了,溜不溜?

分析代码

先来分析这一行:
html = urllib.request.urlopen('http://www.baidu.com').read().decode('utf-8')

这一行我们使用了urllib.request模块中的urlopen方法,相当于发送了一个Request给服务器,它会返回一个Response对象,然后我们使用了read方法将内容读出来,可惜它是bytes类型的数据,于是我们给它解码,即decode,就变成了编码后的字符串。

如果不解码,会发生什么呢?我们看一下,

什么鬼?可以看到,中文全没了。嘿嘿,大家可以自己尝试查一下原因!

urlopen一般可以接受三个参数:
urlopen(url, data, timeout)

查看请求头

使用urlopen方法向服务器发送请求,我们可以查看它的请求头

这个网站相当是一个测试工具,也可以用浏览器访问,查看请求头:

哎哟,这个请求头和浏览器的不一样哦,没关系,这只是默认的请求头,我们可以对它进行更改。

更改请求头

查看文档:https://docs.python.org/3/library/urllib.request.html#urllib.request.Request
我们发现,原来urlopen方法也会接受一个名为 Request的类,而这个类可以帮助我们更改请求头。

和用浏览器访问的一摸一样,nice!

使用Get方法访问

我们可以携带一些信息去访问一个网页,比如

回车前 回车后

网址?后的那一堆就是我们访问一个网页携带的信息,即Get方法访问,我们同样可以用代码实现:

获得了想要的结果。

使用Post方法访问

如果我们想要用Post方法访问某个网页,可以将数据,放到一个Request对象中
class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

当然,你也可以使用urlopen方法,进行Post访问

Post方法更多使用的地方是,比如说登录

现在,你可以自己做一些练习。

以上。

上一篇 下一篇

猜你喜欢

热点阅读