美文网首页技术Ethical Hackers技术教程
Python爬虫学习(二)urllib基础使用

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

作者: 弃用中 | 来源:发表于2017-08-16 23:38 被阅读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)

  • 第一个参数url即为URL
  • 第二个参数data是访问URL时要传送的数据,默认为None
  • 第三个timeout是设置超时时间,默认为 socket._GLOBAL_DEFAULT_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方法更多使用的地方是,比如说登录

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

以上。

相关文章

网友评论

  • smooth_lgh:你好 import urllib.request 为何提示没有request这个头文件
    弃用中: @做一只会思考的piger python 2不太一样
    smooth_lgh:我用的是python2.7.10的版本 , 这个urllib.request要在python 3才有的是吗?
    弃用中:@做一只会思考的piger 要确认用的python版本,如果用的是python2的话,不一样哦
  • klim:讲的很透彻,谢谢楼主

本文标题:Python爬虫学习(二)urllib基础使用

本文链接:https://www.haomeiwen.com/subject/tfywrxtx.html