概念
爬虫(spider,⼜叫网络爬虫),是指向⽹站/网络发起请求,获取资源后分析并提取有用数据的程序。
通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/⼆进制数据(图片、
视频) 爬到本地,进而提取自己需要的数据,存放起来使用。
步骤
- 发送请求
- 请求方式:GET、POST
- 请求URL
- 请求头:User-Agent、Host、Cookies等
- 获取数据
- 响应状态
- 响应头
- 响应体:要获取的数据
- 解析数据
- 正则表达式
- lxml
- BeautifulSoup
- 存储数据
- 文本
- 数据库
- 二进制文件
安装常用包
requests包、bs4包和lxml包
cmd执行
conda info -e #查看所有环境
pip list #查看当前环境下面有哪些包
conda install requests #安装requests包
conda install lxml #安装lxml包
conda install bs4 #安装bs4包
数据提取
1. 响应内容的分类
在发送请求获取响应之后,可能存在多种不同类型的响应内容;而且很多时候,我们只需要响应内容中的一部分数据
-
结构化的响应内容
-
json字符串
- 可以使用re、json等模块来提取特定数据
-
xml字符串
-
可以使用re、lxml等模块来提取特定数据
-
xml字符串的例子如下
<bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
-
-
-
非结构化的响应内容
-
html字符串
- 可以使用re、lxml等模块来提取特定数据
- html字符串的例子如下图
-
2. 认识xml以及和html的区别
要搞清楚html和xml的区别,首先需要我们来认识xml
2.1 认识xml
xml是一种可扩展标记语言,样子和html很像,功能更专注于对传输和存储数据
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
上面的xml内容可以表示为下面的树结构:
2.2 xml和html的区别
- html:
- 超文本标记语言
- 为了更好的显示数据,侧重点是为了显示
- xml:
- 可扩展标记语言
- 为了传输和存储数据,侧重点是在于数据内容本身
2.3 常用数据解析方法
JSON模块
JSON简介
JSON是⼀种存储和交换数据的语法
JSON仅仅是⽂本,它能够轻松地在服务器浏览器之间传输
JSON的数据格式其实就是python里面的字典格式
JSON语法
格式1:JSON 对象
{
"name": "小周",</