Python爬虫入门

Python爬虫入门

网络爬虫概述

网络爬虫与浏览器的区别

网络爬虫的定义与作用

网络爬虫的定义

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,获取响应数据,一种按照一定的规则,自动地抓取万维网信息的程序或脚本

网络爬虫的作用

从万维网上获取, 我们需要的信息

requests请求库

requests 介绍与安装

requests 介绍

requests 是一个优雅而简单的 Python HTTP请求库

requests 的作用是 发送请求获取响应数据

requests 安装

在终端(命令行工具) 运行这个简单命令即可

bash 复制代码
pip install requests

requests 基本使用

requests 使用3步骤

  1. 导入模块
  2. 发送get请求, 获取响应:
  3. 从响应中获取数据:

response 常见属性

  • response.text : 响应体 str类型
  • response.ecoding : 二进制转换字符使用的编码
  • respones.content: 响应体 bytes类型

案例:实现

Beautiful Soup 解析库

Beautiful Soup 介绍与安装

Beautiful Soup 介绍

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库

Beautiful Soup 安装

bash 复制代码
# 安装 Beautiful Soup 4
pip install bs4

# 安装 lxml 
pip install lxml 

BeautifulSoup对象介绍与创建

BeautifulSoup对象

BeautifulSoup对象: 代表要解析整个文档树, 它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法.

创建 BeautifulSoup 对象

警告问题

解决警告问题

BeautifulSoup对象的find方法

find方法的作用: 搜索文档树

  • find(self, name=None, attrs={}, recursive=True, text=None, **kwargs)
  • 参数 name: 标签名
    • attrs: 属性字典
    • recursive: 是否递归循环查找
    • text: 根据文本内容查找
  • 返回
    • 查找到的第一个元素对象
案例: 根据标签名查找
案例: 根据属性查找

需求: 获取文档中的 id 为 link1 的标签

案例: 根据文本查找

需求: 获取文档中 文本 为 Elsie 的 标签文本

Tag 对象介绍

Tag对象对应于原始文档中的XML或HTML标签

Tag有很多方法和属性, 可用 遍历文档树 和 搜索文档树 以及获取标签内容

Tag 对象常见属性
  • name: 获取标签名称
  • attrs: 获取标签所有属性的键和值
  • text: 获取标签的文本字符串

正则表达式

正则表达式的概念与作用

概念

正则表达式(regular expression) 是一种字符串匹配的模式(pattern).

作用

  • 检查一个字符串是否含有某种子串
  • 替换匹配的子串
  • 提取某个字符串中匹配的子串

正则表达式常见语法


re.findall() 方法

API

  • re.findall(pattern, string, flags=0)(重点)
  • 作用:
  • 扫描整个string字符串,返回所有与pattern匹配的列表
  • 参数:
    • pattern: 正则表达式
    • string: 从那个字符串中查找
    • flags: 匹配模式
  • 返回
    • 返回string中与pattern匹配的结果列表
  • 举例:
    • re.findall("\d","chuan1zhi2") >> ["1","2"]

看下面两句话结果一样吗 ?

python 复制代码
rs = re.findall("a.+bc", "a\nbc", re.DOTALL) 
print(rs) 

rs = re.findall("a(.+)bc", "a\nbc", re.DOTALL) 
print(rs)

findall() 特点: (切记)

如果正则表达式中有没有()则返回与整个正则匹配的列表

如果正则表达式中有(),则返回()中匹配的内容列表, 小括号两边东西都是负责确定提取数据所在位置.

正则表达式中的r原串的使用

观察一下代码输出 ?

python 复制代码
rs = re.findall("a\nb","a\nb")
print(rs)

rs = re.findall("a\\nb","a\\nb")
print(rs) 

rs = re.findall("a\\\\nb","a\\nb") 
print(rs)

rs = re.findall(r"a\nb","a\nb") 
print(rs)

结论:

正则中使用r原始字符串, 能够忽略转义符号带来的影响

待匹配的字符串中有多少个\,r原串正则中就添加多少个\即可

案例: 提取最新的疫情数据的json字符串

  • 请求疫情首页内容
  • 提取script标签中各国疫情信息
  • 从各国疫情信息中提取各国疫情的json字符串

json模块

json模块介绍

json模块是Python自带的模块, 用于json与python数据之间的相互转换.

JSON与Python数据类型的对应关系

JSON 转换为 Python


Python 转换为 JSON

Python类型数据转换json字符串


Python类型数据以json格式写入文件

案例: 解析最新的疫情数据的json字符串

  1. 发送请求, 获取疫情首页
  2. 从疫情首页中提取各国疫情字符串
  3. 从各国疫情字符串中, 提取json格式字符串
  4. 把json格式字符串, 转换为Python类型
相关推荐
zyb11475824331 小时前
集合的学习
开发语言·python·学习
嫂子的姐夫1 小时前
036-spiderbuf第C9题
爬虫·python·js逆向·逆向
Python大数据分析@2 小时前
Python包管理器 uv是否替代conda?
python·conda·uv
小白学大数据2 小时前
Python 爬虫实战:批量抓取应用商店分类应用
爬虫·python·分类
亿牛云爬虫专家2 小时前
解耦之美:将业务逻辑从繁杂的代理异常捕获中抽离
python·爬虫代理·业务逻辑·代理ip·异常捕获·try-except·重试算法
N盒2 小时前
【WhisperX+M2M100】快速视频转字幕工具
python·pip
mingshili2 小时前
[架构设计] pypubsub 底层实现机制与高性能替代方案
python·架构设计
电商API&Tina2 小时前
item_video-获得淘宝商品视频 API||商品API
java·大数据·服务器·数据库·人工智能·python·mysql
YMWM_2 小时前
PyArmor介绍
python