1.urllib
库の使用
在使用之前我们需要了解的是urllib
库是什么?
首先urllib
是Python自带的标准库,无需安装,可以直接使用。如果想系统性的学习urllib库,可以直接看它的官方文档。
其分为四个大的模块,分别是:
-
urllib.request 请求模块
-
urllib.error异常处理模块
-
urllib.parse解析模块
-
urllib.robotparser robot.txt文件解析模块
今天我们就使用urllib.request 请求模块简单爬取http://www.baidu.com
的源码
爬取百度首页的源码大概可以分为五步骤:
- 导入urllib.request 请求模块
import urllib.request
- 定义一个url 就是你要访问的地址
url = 'http://www.baidu.com'
- 模拟浏览器向服务器发送请求 response响应
response = urllib.request.urlopen(url)
- 获取响应中的页面的源码
content = response.read().decode('utf-8')
#content 内容的意思
#read方法 返回的是字节形式的二进制数据
#我们要将二进制的数据转换为字符串
#二进制--》字符串 解码 decode('编码的格式')变成utf-8
如果不转码会打印出不同的结果,待会让我们来瞧一瞧吧
- 打印数据
print(content)
让我们运行一下瞧一瞧吧
如果不加decode()会有什么情况发生,让我们瞧一瞧吧
学会简单使用urllib库爬取http://www.baidu.com 之后,让我们来了解一下
urrlib一些其他基础知识吧
2.urllib
库の一个类型和六个方法
import urllib.request
url = 'http://www.baidu.com'
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
1. 一个类型
- response是HTTPResponse的类型,这个类型要记住了,我们日后再谈
print(type(response))
2. 六个方法
- 读取内容, 按照一个字节一个字节的去读,效率会比较慢
content = response.read()
print(content)
#返回5个字节的内容
content = response.read(5)
print(content)
- 读取源码一行
content = response.readline()
print(content)
- 一行读取源码
content = response.readlines()
print(content)
- 返回状态码 如果是200了 那么就证明我们的逻辑没有错
print(response.getcode())
- 返回url地址
print(response.geturl())
- 获取是一个状态信息
print(response.getheaders())
总结
- 数据类型是HttpResponse、不要忘记哦
- read() 字节形式读取二进制 扩展:read(5)返回前几个字节
- readline() 读取一行
- readlines() 一行一行读取 直至结束
- getcode() 获取状态码
- geturl() 获取url
- getheaders() 获取headers