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

Python 解析 html

一、场景分析

假设有如下 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 库

pip install bs4
或者
pip install beautifulsoup4

2、脚本内容

store.py 脚本内容如下:

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 的子节点以列表的方式输出:

print(li.contents)

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

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

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

不然输出结果就会变成

3、运行

py store.py

4、输出结果

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 号

三、拥抱AI

像这种简单的脚本程序,现在都可以叫 AI (比如豆包) 帮我们写:


http://www.mrgr.cn/news/35698.html

相关文章:

  • 如何玩转生成式RAG工具LangChain,轻松构建应用程序?看这一篇就够了!
  • 2024最新Linux发行版,Kali Linux迎来劲敌,零基础入门到精通,收藏这一篇就够了
  • 网络资源模板--Android Studio 零食工坊(商城)
  • 【Kubernetes】常见面试题汇总(三十七)
  • OpenCVSharp中的图像金字塔详解
  • 问:JAVA中唤醒阻塞的线程有哪些?
  • SysML图例-核聚变
  • SAM核心代码注释总结
  • AJAX(简介以及一些用法)
  • 微信小程序开发
  • 老板回来,我不知道——观察者模式
  • SX_c程序的编译_24
  • Docker搭建 RabbitMQ 最新版
  • 修牛蹄视频哪里找?修牛蹄的解压视频素材网站分享
  • API代理是什么?解读其原理与作用
  • Unity场景内画车道线(根据五阶曲线系数)
  • 第Y1周:调用官方权重进行检测
  • Web3技术解析:区块链与智能合约的角色
  • JAVA开源项目 体育馆管理系统 计算机毕业设计
  • 深入解析 helpTransfer 方法:多线程协作中的哈希表扩容