Python 解析 html

server/2024/9/25 6:09:58/

一、场景分析

假设有如下 html 文档:

写一段 python 脚本,解析出里面的数据,包括经度维度。

<div class='storelist'><ul><li lng="100.111111" lat="10.111111"><h4>联盟店1</h4><p><br />X市Y区Z街道 1000 号</p></li><li lng="101.111111" lat="11.111111"><h4>联盟店2</h4><p><br />X市Y区Z街道 1001 号</p></li><li lng="102.111111" lat="12.111111"><h4>联盟店3</h4><p><br />X市Y区Z街道 1002 号</p></li></ul>
</div>

二、步骤

1、安装 BeautifulSoup4 库

python">pip install bs4
或者
pip install beautifulsoup4

2、脚本内容

store.py 脚本内容如下:

python">from bs4 import BeautifulSoup# 官方文档:https://beautifulsoup.readthedocs.io/zh-cn/v4.4.0/#id14# 输入文档
input_path = r"C:\Users\Administrator\Desktop\py\html\store.html"
# 输出文档
output_path = r"C:\Users\Administrator\Desktop\py\html\data.txt"
# 以 append 追加方式打开输出文档
output_file = open(output_path, 'a', encoding='utf-8')# 打开 html 输入文档,并使用 Python 标准库 html.parser 解析成 BeautifulSoup 对象
soup = BeautifulSoup(open(input_path, 'r', encoding='utf-8'), 'html.parser')# 搜索文档树,获取到所有 li TAG 组成的数组
li_array = soup.find_all('li')# 遍历这个数组,并往输出文档输出信息
for i, li in enumerate(li_array):# print(li.contents)output_file.write('\n'+str(i+1)+'、'+li.contents[1].text)output_file.write('\n 经度:'+li['lng'])output_file.write('\n 维度:'+li['lat'])output_file.write('\n 名称:'+li.contents[1].text)output_file.write('\n 地址:'+li.contents[3].text.strip())output_file.close()

其中,contents 属性可以将 tag 的子节点以列表的方式输出:

python">print(li.contents)

 我们可以用列表索引来获取它的某一个元素

li.contents[1] 表示 <h4>联盟店X</h4> 获取标签里面的内容,就是 li.contents[1].text

li.contents[3] 表示 <p></p> 因为 p 后面有换行,所以用 strip() 函数去掉换行符 

不然输出结果就会变成

3、运行

python">py store.py

4、输出结果

python">1、联盟店1经度:100.111111维度:10.111111名称:联盟店1地址:X市Y区Z街道 1000 号
2、联盟店2经度:101.111111维度:11.111111名称:联盟店2地址:X市Y区Z街道 1001 号
3、联盟店3经度:102.111111维度:12.111111名称:联盟店3地址:X市Y区Z街道 1002 号


http://www.ppmy.cn/server/121689.html

相关文章

Java单例模式

package com.qcby; //饿汉式&#xff0c;先new出来对象 public class Hungry {private Hungry() {};private final static Hungry hungry new Hungry();public Hungry getinstance() {return hungry;} }package com.qcby; //懒汉&#xff0c;有需要才创建 public class SuoLaz…

HTML5好看的水果蔬菜在线商城网站源码系列模板2

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059220 HTML5好看的水果蔬菜在线商城…

如何选择游戏高防服务器,有什么需要注意的点?

自二十世纪初互联网迅速发展&#xff0c;市场发展瞬息万变&#xff0c;游戏行业也迎来了发展的春天。如今游戏行业已成为互联网行业的支柱&#xff0c;占据市场重要的比重。对于游戏行业的企业来说选择服务器是至为重要的一步&#xff0c;市场上的服务器良莠不济&#xff0c;如…

循环中用sleep

echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);} 没有用sleep,快速消耗cpu和内存 使用sleep后效果 echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);usleep(1000);//php 暂停0.001秒} 总结&#xff1a;sleep能释放资源(cpu和内存)&#xff0c;但是运…

Spring Boot快速入门详解

目录 1. 环境准备 2. 创建项目 3. 项目结构 4. 编写代码 a. 启动类 b. 创建控制器 5. 运行应用 6. 测试 Spring Boot 是一个用于简化新 Spring 应用程序的初始搭建以及开发过程的框架。通过提供默认配置来快速启动新的 Spring 项目&#xff0c;避免了繁琐的 XML 配置。 1. 环境…

【Python报错已解决】ModuleNotFoundError: No module named ‘sklearn‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

考研数据结构——C语言实现小顶堆

数组初始化&#xff1a; 首先&#xff0c;我们有一个整数数组arr&#xff0c;里面包含了一系列需要排序的数字。数组的长度n是通过对数组arr的总字节大小除以单个元素的字节大小得到的。 小顶堆调整函数&#xff1a; adjustHeapMin函数的作用是将数组中的元素从某个节点向下调整…

字符串——String

目录 1:String概述 2.String注意点 3.创建String对象的二种方法 4.字符串的比较 4.1&#xff1a;号比的是什么&#xff1f; 4.1.1&#xff1a;基本数据类型&#xff08;比较的是数据值&#xff09; 4.1.2&#xff1a;引用数据类型&#xff08;比较的是地址&#xff09; …