当前位置: 首页 > article >正文

bs4模块

bs4解析——HTML语法

 HTML(Hyper Text Markup Language)超⽂本标记语⾔, 是我们编写⽹⻚的最基本也是最核⼼的⼀种语⾔. 其语法规则就是⽤不同的标签对⽹⻚上的内容进⾏标记, 从⽽使⽹⻚显示出不同的展示效果 

<h1>
    哈哈哈
</h1>
上述代码的含义是在页面中显示"哈哈哈"三个字, 但是我爱你三个字 被"<h1>"和"</h1>"标记了, 这个时候,浏览器在展示的时候就会让“哈哈哈”变成 标题, 所以HTML的语法就是⽤类似这样的标签对页面内容进行标记, 不同的标签表现出来的效果也是不⼀样的
<body text="green" bgcolor="#eee">
    哈哈哈
</body>
标签中还可以给出xxx=xxx这样的东西,通过xxx=xxx这种形式对h1标签进⼀步的说明了,这种语法在html中被称为标签的属性. 并且属性可以有很多个
HTML语法总结:
<标签 属性="值" 属性="值">
    被标记的内容
</标签>

bs4模块的安装

pip install bs4

如果安装的速度慢, 建议更换国内源(推荐阿⾥源或者清华源)
pip install -i
https://pypi.tuna.tsinghua.edu.cn/simple bs4

bs4模块的使用

bs4在使用的时候就需要参照⼀些html的基本语法来进行使用
案例:抓取食品商务网果蔬价格:
https://price.21food.cn/guoshu/

第一步:拿到页面源代码

import requests
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)
print(resp.text)

第二步:将页面源代码丢给BeautifulSoup, 然后我们就可以通过bs对象去检索页面源代码中的html标签

import requests
from bs4 import BeautifulSoup

#拿到页面源代码
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)

#运用BeautifulSoup解析
page = BeautifulSoup(resp.text,features="html.parser")
table = page.find("div",class_="gs_top_t2")
print(table)

第三步:拿到所有数据

在HTML中,tr表示行,td表示列,想要获取所有的信息,可以先获得每一行的信息,再将每一行切片成每一列,这样就可以得到单一的元素

import requests
from bs4 import BeautifulSoup

#拿到页面源代码
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)

#运用BeautifulSoup解析
page = BeautifulSoup(resp.text,features="html.parser")
table = page.find("div",class_="gs_top_t2")
print(table)

#拿到所有数据
trs = table.find_all("tr")[1:]
for tr in trs:
    tds = tr.find_all("td")
    name = tds[0].text
    low = tds[1].text
    avg = tds[2].text
    date = tds[3].text
    print(name,low,avg,date)


http://www.kler.cn/a/273765.html

相关文章:

  • python无需验证码免登录12306抢票 --selenium(2)
  • 【微服务】1、引入;注册中心;OpenFeign
  • React Router底层核心原理详解
  • el-table表格合并某一列
  • maven的简单介绍
  • mysql中查询json的技巧
  • MyBatis3源码深度解析(十四)SqlSession的创建与执行(一)Configuration与SqlSession的创建过程
  • React的基本使用
  • 嵌入式学习40-数据结构
  • MindGraph:文字生成知识图
  • 电机学(笔记一)
  • UGUI界面性能优化3-合理规划界面层级结构
  • Machine Learning ---- Gradient Descent
  • 万界星空科技WMS仓储管理包含哪些具体内容?
  • Python如何去除网页中的隐藏元素
  • Matplotlib如何显示多张图片(管理多个子图)
  • 如何系统地自学 Python?
  • 【iOS】Blocks
  • redis cpu百分百问题
  • C#进阶实践项目(俄罗斯方块)
  • Ubuntu使用Docker部署Nginx容器并结合内网穿透实现公网访问本地服务
  • 【C++】每日一题 71 简化路径
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • K8s的概念
  • 云原生 PaaS 服务:构建现代应用的利器(分布式应用服务、配置中心、数据库服务、定时任务、实时监控、服务网关、技术组件)
  • 【备忘录】查询数据库中是否存在数据 的SQL语句性能对比和优化