python中request请求库与BeautifulSoup解析库的用法

2023-11-04

python中request请求库与BeautifulSoup解析库的用法

request

安装

打开cmd窗口,检查python环境,需要python3.7版本及以上
在这里插入图片描述
然后输入,下载requests库

pip install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

在这里插入图片描述

创建项目

在这里插入图片描述
创建python文件,最好不要含有中文字符
在这里插入图片描述

测试代码

在这里插入图片描述

# 1.导入模块
# 1.导入模块
import requests

# 2. 发送请求,获取响应
response = requests.get("http://www.baidu.com")
print(response)  # 这里打印的结果是响应码

# 3. 获取响应数据
# print(response.encoding) # ISO-8859-1

# response.encoding = 'utf-8' # 设置编码格式
# print(response.text)

# 上面两句话等于下面一句话
print(response.content.decode())

运行结果
在这里插入图片描述

小案例(请求疫情首页)

在这里插入图片描述
案例代码

# 1. 导入模块
import requests

# 2. 发送请求,获取响应
response = requests.get("https://ncov.dxy.cn/ncovh5/view/pneumonia")

# 3. 从响应中获取数据
print(response.content.decode())

运行结果
在这里插入图片描述

BeautifulSoup

简介

在这里插入图片描述
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

安装

运行下面两行命令,或者pycharm可以自动安装。
pip install bs4
pip install lxml

学习代码

# 1. 导入模块
from bs4 import BeautifulSoup

# 2. 创建BeautifulSoup对象
soup = BeautifulSoup('<html>data</html>', 'lxml')
print(soup)

运行结果

在这里插入图片描述

find方法

简介

在这里插入图片描述

案例(根据标签名查找)

在这里插入图片描述
在这里插入图片描述

案例代码

# 1.导入模块
from bs4 import BeautifulSoup

# 2.准备文本字符串
html = '''
    <title>The Dormouse's story</title>
</head>
<body>
<p class="title">
<b>The Dormouse's story</b>
</p>
<p class="story">Once Upon a time three were three little sister;and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, 
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and 
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well. 
</p>
<p class="story">...</p>
</body>
</html>
'''

# 3.创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')

# 4.查找title标签
title = soup.find('title')
print(title)

# 5.查找a标签
a = soup.find('a')
print(a)

#查找所有a标签
a_s = soup.find_all('a')
print(a_s)

运行结果:
在这里插入图片描述

案例(根据属性查找)

在这里插入图片描述

案例代码

# 1.导入模块
from bs4 import BeautifulSoup

# 2.准备文本字符串
html = '''
    <title>The Dormouse's story</title>
</head>
<body>
<p class="title">
<b>The Dormouse's story</b>
</p>
<p class="story">Once Upon a time three were three little sister;and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, 
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and 
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well. 
</p>
<p class="story">...</p>
</body>
</html>
'''

# 3.创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')

# 二、根据属性查找
#查找 id 为 link1 的标签
#方法一:通过命名参数进行查找
a = soup.find(id = 'link1')
print(a)

#方法二:使用attrs来指定属性字典,进行查找
a = soup.find(attrs={'id':'link1'})
print(a)

运行结果
在这里插入图片描述

案例(根据文本查找)

在这里插入图片描述
案例代码

# 1.导入模块
from bs4 import BeautifulSoup

# 2.准备文本字符串
html = '''
    <title>The Dormouse's story</title>
</head>
<body>
<p class="title">
<b>The Dormouse's story</b>
</p>
<p class="story">Once Upon a time three were three little sister;and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, 
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and 
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well. 
</p>
<p class="story">...</p>
</body>
</html>
'''

# 3.创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')

#三、根据文本查找
# 获取下面文档中文本为 Elsie 的标签文本
text = soup.find(text='Elsie')
print(text)

运行结果
在这里插入图片描述

案例(Tag属性使用)

在这里插入图片描述
案例代码

# 1.导入模块
from bs4 import BeautifulSoup

# 2.准备文本字符串
html = '''
    <title>The Dormouse's story</title>
</head>
<body>
<p class="title">
<b>The Dormouse's story</b>
</p>
<p class="story">Once Upon a time three were three little sister;and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, 
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>and 
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well. 
</p>
<p class="story">...</p>
</body>
</html>
'''

# 3.创建BeautifulSoup对象
soup = BeautifulSoup(html,'lxml')

a = soup.find(attrs={'id':'link1'})

#Tag对象
print(type(a))  #<class 'bs4.element.Tag'>
print('标签名:',a.name)
print('标签所有属性:',a.attrs)  #输出的class是一个列表,class 一个属性中可以有多个值
print('标签文本内容:',a.text)

运行结果
在这里插入图片描述

案例(从疫情首页提取各国最新的疫情数据)

在这里插入图片描述
ctrl+f查找某个类型元素的区域,然后,需找到对应标签的id,然后根据id的值来通过find方法获取文本内容。
在这里插入图片描述

案例代码

# 1.导入相关模块
import requests
from bs4 import BeautifulSoup

# 2.发送请求,获取疫情首页内容
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
#print(home_page)

# 3.使用 BeautifulSoup 获取疫情数据
soup = BeautifulSoup(home_page, 'lxml')
script = soup.find(id='getAreaStat')
text = script.text
print(text)

运行结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中request请求库与BeautifulSoup解析库的用法 的相关文章

  • 并行 dask for 循环比常规循环慢?

    如果我尝试使用 dask 并行化 for 循环 它最终会比常规版本执行得慢 基本上 我只是按照 dask 教程中的介绍性示例进行操作 但由于某种原因它在我这边失败了 我究竟做错了什么 In 1 import numpy as np from
  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • 如何避免使用 python 处理空的标准输入?

    The sys stdin readline 返回之前等待 EOF 或新行 所以如果我有控制台输入 readline 等待用户输入 相反 我想打印帮助并在没有需要处理的情况下退出并显示错误 而不是等待用户输入 原因 我正在寻找一个Pytho
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • 运行 Python 单元测试,以便成功时不打印任何内容,失败时仅打印 AssertionError()

    我有一个标准单元测试格式的测试模块 class my test unittest TestCase def test 1 self tests def test 2 self tests etc 我的公司有一个专有的测试工具 它将作为命令行
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • 初识kafka---Kafka从入门到精通(一)

    Kafka中的消息是以topic进行分类的 生产者生产消息 消费者消费消息都是面向topic 而每个topic里面都是有分区的概念 一个topic有三个分区 而每个分区都是有分区leader partition leader 和partit
  • http协议详解

    本篇博文主要介绍HTTP请求 响应的系列过程 包括四个部分 是在陆续学习中觉着之间有关联总结下来的 以便自己今后忘记后可以快速查看也为各位看到这篇文章的朋友们梳理一下知识 下面 正文开始 作为一个前端开发人员 我们每天都在与页面打交道 那么
  • 源码编译安装httpd-2.4.39

    环境 apr 1 7 0 tar bz2 apr util 1 6 1 tar bz2 httpd 2 4 39 tar bz2 1 合并源码文件 tar xvf apr 1 7 0 tar bz2 tar xvf apr util 1 6
  • 2020-12-13 51单片机笔记

    单片机型号选择错误 该STC软件左上角的单片机型号 显示不出来 LCD1602显示屏插反 extern uchar time 报错没定义 在其他文件运用时也要加上uchar time 不能直接使用 下图是错误案例 在 c文件定义变量 然后在
  • 华为eNSP配置PPP协议中的CHAP认证

    CHAP认证 CHAP认证过程比较复杂 三次握手机制 使用密文格式发送CHAP认证信息 由认证方发起CHAP认证 有效避免暴力破解 在链路建立成功后具有再次认证检测机制 目前在企业网的远程接入环境中用的比较常见 两个路由器都要加模块 路由器
  • 把照片改成指定像素基于PS(证件照修改为制定像素大小)

    下图所示的图片当前宽度为1064像素 高度为1972像素 右键图片打开 属性 对话框可查看尺寸 接下来我们想将图片尺寸改为宽度1000像素 高度1000像素 同时图片不能变形 操作步骤 1 打开PS软件 按Ctrl N组合键打开 新建文档
  • [译]Android 中 Kotlin 与 RecyclerView 高性能列表

    翻译说明 原标题 Kotlin RecyclerView for High Performance Lists in Android 原文地址 www andreasjakl com 原文作者 Andreas Jakl RecyclerVi
  • nginx 配置 http, https可以同时访问(报错: The plain HTTP request was sent to HTTPS port)

    Aphorism full stack 前言 最近微信项目升级 https 域名 购买好域名后 开放 443 端口后 http 访问竟然出错了 The plain HTTP request was sent to HTTPS port 导致
  • crypto-js 加密、解密使用方法,复制就能用

    一 安装crypto js npm install crypto js 二 封装加密方法 单独在js中封装一个js存放这个方法 后期使用再引入 import CryptoJS from crypto js let aesKeyInfo ke
  • algorithm头文件下的函数

    非修改性序列操作 12个 循环 对序列中的每个元素执行某操作 for each 查找 在序列中找出某个值的第一次出现的位置 find 在序列中找出符合某谓词的第一个元素 find if 在序列中找出一子序列的最后一次出现的位置 find e
  • anaconda

    卸载 直接删除 下载 ENTER anaconda3 和 conda 然后清除 bashrc 中conda相关的字段 安装 sudo Anaconda3 5 2 0 Linux x86 64 sh u u表示覆盖安装 中是默认值 询问过程要
  • proc文件系统探索 之 根目录下的文件[七]

    主要参考内核文档和红帽文档对 gt cat proc meminfo 读出的内核信息进行解释 下篇文章会简单对读出该信息的代码进行简单的分析 MemTotal 507480 kBMemFree 10800 kBBuffers 34728 k
  • 【C语言】课程设计实训——人事管理系统

    目录 题目 总体设计 详细设计 系统实现 题目 1 需求分析 人事档案信息采用文件存储 要提供文件的输入输出操作 根据学院人事的变动情况 可添加或删除记录 因而要提供文件的添加删除操作 能根据编号和姓名进档案查询 所提供文件的查找操作 可以
  • NC01--股票(一次交易)、合并k个有序链表、字符串的排列、接雨水问题、输出二叉树的右视图

    1 股票 一次交易 https www nowcoder com practice 64b4262d4e6d4f6181cd45446a5821ec tpId 117 tqId 37717 rp 1 ru activity oj qru t
  • 递归的基本运用与实践

    一 递归的概念 简单的说 递归就是方法自己调用自己 每次调用时传入不同的变量 递归有利于编程者解决复杂的问题 同时可以让代码变得简洁 二 递归调用机制 入门案例 累加代码实现 public static int accumulation i
  • 基于Java对STOMP服务端进行测试

    目录 一 目标 二 服务端改动 三 测试程序 3 1 依赖 3 1 用户量和消息数 3 2 测试端口是否可用 3 3 客户端连接 订阅测试 3 4 数据发布 断开连接测试 四 消费者会话处理程序 五 生产者会话处理程序 六 测试结果 一 目
  • B/S三层架构[转载]

    三层架构 3 tier application 通常意义上的三层架构就是将整个业务应用划分为 表现层 UI 业务逻辑层 BLL 数据访问层 DAL 区分层次的目的即为了 高内聚 低耦合 的思想 表现层 UI 通俗讲就是展现给用户的界面 即用
  • 多态的理解

    多态的概念 多态的概念 简单来讲 多态的意思就是多种形态 或者说 去完成某个行为 当不同的对象去完成时会产生出不同的状态 也可以理解为我们人去完成同一件事情 但是每一个人去完成 都会产生不一样的结果 多态构成的条件 1 必须通过父类的指针或
  • qt实现9×9数独游戏

    qt实现的数独小游戏 资源有可下载直接跑的exe enigma已经打包好 源码可私信 部分代码 include widget h include ui widget h include form h include
  • python中request请求库与BeautifulSoup解析库的用法

    python中request请求库与BeautifulSoup解析库的用法 request 安装 打开cmd窗口 检查python环境 需要python3 7版本及以上 然后输入 下载requests库 pip install reques