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类型
相关推荐
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
星寂樱易李9 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
qingfeng154159 小时前
企业微信机器人开发:如何实现自动化与智能运营?
人工智能·python·机器人·自动化·企业微信
Python私教12 小时前
Playwright MCP 用 a11y 树抓页面:比全量 DOM 省 token 的采集 Agent
爬虫
彦为君12 小时前
Agent 安全:从权限提示到沙箱隔离
python·ai·ai编程
PILIPALAPENG13 小时前
Python 语法速成指南:前端开发者视角(JS 类比版)
前端·人工智能·python
用户83562907805114 小时前
Python 操作 PowerPoint 页眉与页脚指南
后端·python
枫叶林FYL14 小时前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf
猫猫的小茶馆15 小时前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32