【python】爬虫基础——JSON、requests、BeautifulSoup、lxml、爬取静态网页

概念

爬虫(spider,⼜叫网络爬虫),是指向⽹站/网络发起请求,获取资源后分析并提取有用数据的程序。

通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/⼆进制数据(图片、

视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

步骤

  1. 发送请求
    1. 请求方式:GET、POST
    2. 请求URL
    3. 请求头:User-Agent、Host、Cookies等
  2. 获取数据
    1. 响应状态
    2. 响应头
    3. 响应体:要获取的数据
  3. 解析数据
    1. 正则表达式
    2. lxml
    3. BeautifulSoup
  4. 存储数据
    1. 文本
    2. 数据库
    3. 二进制文件

安装常用包

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": "小周",</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz的学习笔记本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值