BeautifulSoup 返回网页标签的名称、父标签名称、行号、完整路径
BeautifulSoup 返回网页标签的名称、父标签名称、行号、完整路径
应用beatifulsoup完成网页标签的名称、父标签名称、行号、完整路径的获取,这里reversed实现对网页标签的遍历。
示例html文件:
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
<meta content="webkit" name="renderer"/>
<title>交易网</title>
</head>
<body>
<div id="menutab_8_2" style="">
<link href="../Template/Default/ztbzx/css/style.css" rel="stylesheet" type="text/css"/>
<script src="../template/default/js/jquery-1.11.0.min.js" type="text/javascript"></script>
<script>function iFrameHeight() {var total = document.getElementById("ZtbggxxDetail_LblCount").innerHTML;for(var i=0;i<parseInt(total);i++){var ifm = document.getElementById("iframejjgz"+i.toString());var subWeb = document.frames ? document.frames["iframejjgz"+i.toString()].document : ifm.contentDocument;if (ifm != null && subWeb != null) {ifm.height = subWeb.body.scrollHeight;}}}</script>
<div id="ZtbbgggDetail_jsgc1_text"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center"><h2 class="article-title">海运区2020年扶贫道路业绩公示</h2></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr> <td align="center" style="line-height: 25px; color: #4e4e4e;">【信息日期:2020/01/22】</td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="text-align:left;"><div><p>
</p><p align="center" style="margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;padding:0pt 0pt 0pt 0pt ;text-align:left;font-family:Calibri;font-size:12.0000pt;margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;
margin-left:0.0000pt;padding:0pt 0pt 0pt 0pt ;
text-align:center;vertical-align:baseline;"><b><span style="font-family:宋体;color:rgb(51,51,51);
letter-spacing:0.0000pt;font-weight:bold;text-transform:none;
font-style:normal;font-size:14.0000pt;"><font face="宋体">海运区</font>2020年扶贫道路建设项(公平路)施工中标候选人补充业绩公示</span></b></p>
<div align="center">
<table border="0" cellspacing="0" style="font-family:'Times New Roman';font-size:10.0000pt;border-collapse:collapse;width:435.8000pt;border:none;">
<tbody>
<tr style="height:16.2000pt;">
<td style="width:72.2500pt;padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ;border-left:1.0000pt solid windowtext;border-right:1.0000pt solid windowtext;border-top:1.0000pt solid windowtext;border-bottom:1.0000pt solid windowtext;background:rgb(255,255,255);" valign="center" width="96">
<p align="center" style="margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;padding:0pt 0pt 0pt 0pt ;text-align:left;font-family:Calibri;font-size:12.0000pt;margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;text-align:center;vertical-align:baseline;"><b><span style="font-family:宋体;color:rgb(51,51,51);letter-spacing:0.0000pt;font-weight:bold;text-transform:none;font-style:normal;font-size:12.0000pt;">招生人</span></b></p>
</td>
<td style="width:363.5500pt;padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ;border-left:none;border-right:1.0000pt solid windowtext;border-top:1.0000pt solid windowtext;border-bottom:1.0000pt solid windowtext;background:rgb(255,255,255);" valign="center" width="484">
<p align="center" style="margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;padding:0pt 0pt 0pt 0pt ;text-align:left;font-family:Calibri;font-size:12.0000pt;margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;text-align:center;"><span style="font-family:宋体;color:rgb(51,51,51);font-size:12.0000pt;">东临分局</span></p>
</td>
</tr></tbody>
</table>
</div>
<p align="justify" style="margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;margin-left:0.0000pt;padding:0pt 0pt 0pt 0pt ;text-align:left;font-family:Calibri;font-size:12.0000pt;margin-top:0.0000pt;margin-right:0.0000pt;margin-bottom:0.0000pt;
margin-left:0.0000pt;text-indent:28.1000pt;padding:0pt 0pt 0pt 0pt ;
text-align:justify;text-justify:inter-ideograph;
"><b><span style="font-family:宋体;color:rgb(51,51,51);
font-weight:bold;font-size:12.0000pt;"><font face="宋体">若招生人对上述结果有质疑,请在公示期内,首先以书面形式向本项目招标人提出质疑,联系电话:</font>3258-23387677;也可以向招标代理公司反映,联系电话:5658-</span></b><b><span style="font-family:宋体;color:rgb(51,51,51);
font-weight:bold;font-size:12.0000pt;">58956709</span></b><b><span style="font-family:宋体;color:rgb(51,51,51);
font-weight:bold;font-size:12.0000pt;"><font face="宋体">;接受投诉单位及电话:交易监督管理局电话:</font>3258-23387677。</span></b></p>
<br/>
<p></p></div></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><div></div></td></tr></tbody></table></div>
</div>
</body></html>
代码部分:
from bs4 import BeautifulSoup
import os
import re
import pandas as pd
from bs4 import NavigableString,Comment#返回节点的名称Full Xpath
def getelmentpath(inFile):for n in range(0, 1, 1):f = open(inFile, encoding="utf-8")bindid=os.path.basename(inFile).split('.')[0] + '_'bs = BeautifulSoup(f.read(), 'html.parser') for elem in bs.find('div', {'id': 'menutab_8_2'}).find_all(True): root_childs = '.'.join(reversed([p.name for p in elem.parentGenerator() if p])) print(elem.name+"\t"+elem.parent.name+"\t"+str(elem.sourceline)+"\t"+str(root_childs+"."+elem.name))f.close()if __name__ == '__main__':getelmentpath(r'D:/demo.html')
执行结果:
link div 9 [document].html.body.div.link
script div 10 [document].html.body.div.script
script div 11 [document].html.body.div.script
div div 24 [document].html.body.div.div
table div 24 [document].html.body.div.div.table
tbody table 24 [document].html.body.div.div.table.tbody
tr tbody 24 [document].html.body.div.div.table.tbody.tr
td tr 24 [document].html.body.div.div.table.tbody.tr.td
h2 td 24 [document].html.body.div.div.table.tbody.tr.td.h2
table div 24 [document].html.body.div.div.table
tbody table 24 [document].html.body.div.div.table.tbody
tr tbody 24 [document].html.body.div.div.table.tbody.tr
td tr 24 [document].html.body.div.div.table.tbody.tr.td
table div 24 [document].html.body.div.div.table
tbody table 24 [document].html.body.div.div.table.tbody
tr tbody 24 [document].html.body.div.div.table.tbody.tr
td tr 24 [document].html.body.div.div.table.tbody.tr.td
div td 24 [document].html.body.div.div.table.tbody.tr.td.div
p div 24 [document].html.body.div.div.table.tbody.tr.td.div.p
p div 25 [document].html.body.div.div.table.tbody.tr.td.div.p
b p 27 [document].html.body.div.div.table.tbody.tr.td.div.p.b
span b 27 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span
font span 29 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span.font
div div 30 [document].html.body.div.div.table.tbody.tr.td.div.div
table div 31 [document].html.body.div.div.table.tbody.tr.td.div.div.table
tbody table 33 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody
tr tbody 34 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr
td tr 35 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td
p td 39 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td.p
b p 41 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td.p.b
span b 41 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td.p.b.span
td tr 45 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td
p td 49 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td.p
span p 51 [document].html.body.div.div.table.tbody.tr.td.div.div.table.tbody.tr.td.p.span
p div 59 [document].html.body.div.div.table.tbody.tr.td.div.p
b p 62 [document].html.body.div.div.table.tbody.tr.td.div.p.b
span b 62 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span
font span 63 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span.font
b p 63 [document].html.body.div.div.table.tbody.tr.td.div.p.b
span b 63 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span
b p 64 [document].html.body.div.div.table.tbody.tr.td.div.p.b
span b 64 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span
font span 65 [document].html.body.div.div.table.tbody.tr.td.div.p.b.span.font
br div 66 [document].html.body.div.div.table.tbody.tr.td.div.br
p div 67 [document].html.body.div.div.table.tbody.tr.td.div.p
table div 67 [document].html.body.div.div.table
tbody table 67 [document].html.body.div.div.table.tbody
tr tbody 67 [document].html.body.div.div.table.tbody.tr
td tr 67 [document].html.body.div.div.table.tbody.tr.td
div td 67 [document].html.body.div.div.table.tbody.tr.td.div
BeautifulSoup 返回网页标签的名称、父标签名称、行号、完整路径相关推荐
- css中的继承,子标签会继承父标签的某些样式(话说自己以前还真的没有注意到过继承)
css有三大特性:层叠.继承.优先级.这里说一下继承 继承的好处是:恰当地使用继承,可以简化代码,降低css样式的复杂性. 能够继承的有大部分text- font- line- 这些前缀开头的.col ...
- Python 库学习笔记—— BeautifulSoup 处理子标签、后代标签、兄弟标签和父标签
首先,我们来看一个简单的网页https://www.pythonscraping.com/pages/page3.html,打开后: 右键"检查"(谷歌浏览器)查看元素: 用导航树 ...
- javaweb带父标签的自定义标签
1.完整的示例代码:要实现的功能是父标签中有name属性,子标签将父标签的name属性值打印到jsp页面上. 1.1 父类和子类的标签处理器类 testParentTag.java package c ...
- java自定义jsp标签_Javaweb自定义jsp标签
自定义标签 用户定义的一种自定义的jsp标记,当一个含有自定义标签的jsp页面被jsp引擎编译成Servlet时,tag标签被转化成了对一个称为标签处理类的对象的操作.于是当jsp页面被jsp引擎转化 ...
- html 选择自动增加行数,为网页中的源代码自动设置行号
本文演示了如何为网页中的源代码块自动设置行号. 现在,我们准备在网页中显示C++的Hello world.这段著名的代码如下所示: #include intmain() { std::cout < ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结
这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...
- xpath 取标签下所有文字内容_GNE 预处理技术——如何移除特定标签但是保留文字到父标签...
GNE 预处理技术--如何移除特定标签但是保留文字到父标签mp.weixin.qq.com 在开发新闻网页正文通用抽取器GNE的过程中,需要对目标网页的源代码进行一些预处理,从而提高正文抓取的准确性 ...
- 常用正则表达式爬取网页信息及分析HTML标签总结
这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...
- Highmaps网页图表教程之数据标签与标签文本
Highmaps网页图表教程之数据标签与标签文本 Highmaps数据标签 数据标签用于在地图图表上展现节点对应的数据.数据标签展现数据是静态的,只要节点一加载,数据标签就会出现在节点附近.在High ...
最新文章
- 在Java中使用xpath对xml解析
- VS如何更改项目类型?
- 一个简易的webpack开发环境
- 基于Boost::beast模块的协程WebSocket 服务器
- 【OpenJ_Bailian - 2711 】 合唱队形(dp,枚举中间顶点)
- amd为什么还用针脚_英特尔的针脚都取消了,为什么AMD的还没动静?
- 传统认知PK网络认知 刚子扯谈烤串认知
- Mac m1搭建python深度学习环境+pycharm
- win10电脑虚拟网络设置方法
- 牛顿插值法的Python程序
- 学习双拼必看(最全教程):双拼输入法的心得以及快速入门办法
- 小白学python——函数1
- 高速的二舍八入三七作五_详解青银高速市区段计费方法人工车道比ETC贵3元
- java相关资料下载
- ad Hoc打包测试
- 安徽省宿州市谷歌卫星地图下载
- Wah!Cade-游戏模仿器
- RK3399 ,64位,Ubuntu16.04系统安装ROS-kinetic方法总结
- 多年iOS开发经验总结(转)
- linux修改磁盘标签,Ubuntu挂载硬盘,修改卷标
热门文章
- wxWidgets:wxLogNull类用法
- boost::sort模块使用 string_sort 使用复杂的多部分键对结构进行排序
- boost::regex模块在 cpp 文件中搜索类定义,使用全局数据的测试程序
- boost::ratio_divide相关的测试程序
- boost::replace_copy相关的测试程序
- boost::mpi模块实现测试mpi版本
- boost::mp11::tuple_transform相关用法的测试程序
- boost::geometry::srs::spar用法的测试程序
- VTK:结构化网格之StructuredGrid
- VTK:PolyData之PolyDataToUnstructuredGrid