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类型
相关推荐
sg_knight8 分钟前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
好运的阿财15 分钟前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
张張40825 分钟前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339930 分钟前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
Ricky111zzz1 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展
小白学大数据1 小时前
Selenium+Python 爬虫:动态加载头条问答爬取
爬虫·python·selenium
Hui Baby1 小时前
springboot读取配置文件
后端·python·flask
阿Y加油吧1 小时前
回溯法经典难题:N 皇后问题 深度解析 + 二分查找入门(搜索插入位置)
开发语言·python
leo_messi941 小时前
2026版商城项目(三)-- ES+认证服务
后端·python·django
NPE~2 小时前
[App逆向]环境搭建下篇 — — 逆向源码+hook实战
android·javascript·python·教程·逆向·hook·逆向分析