怎样用xpath去除某个不想要的元素,从而选择满意的内容
程序员文章站
2022-03-03 12:33:06
...
html=''''<div class="shici_list_main">
<h3><a href="/chaxun/list/3075417.html" target="_blank">《长干行二首》</a></h3>
<div class="shici_content">
其一<br />妾发初覆额,折花门前剧。<br />
<a href="javascript:void(0)" class="show_more_shici">展开全文</a>
<div style="display: none">
郎骑竹马来,绕床弄青梅。<br />同居长干里,两小无嫌猜,<br />十四为君妇,羞颜未尝开。<br />低头向暗壁,千唤不一回。<br />十五始展眉,愿同尘与灰。<br />常存抱柱信,岂上望夫台。<br />十六君远行,瞿塘滟滪堆。<br />五月不可触,猿声天上哀。<br />门前迟行迹,一一生绿苔。<br />苔深不能扫,落叶秋风早。<br />八月胡蝶来,双飞西园草。<br />感此伤妾心,坐愁红颜老。<br />早晚下三巴,预将书报家。<br />相迎不道远,直至长风沙。<br />其二<br />忆妾深闺里,烟尘不曾识。<br />嫁与长干人,沙头候风色。<br />五月南风兴,思君下巴陵。<br />八月西风起,想君发扬子。<br />去来悲如何,见少离别多。<br />湘潭几日到,妾梦越风波。<br />昨夜狂风度,吹折江头树。<br />淼淼暗无边,行人在何处。<br />好乘浮云骢,佳期兰渚东。<br />鸳鸯绿蒲上,翡翠锦屏中。<br />自怜十五余,颜色桃花红。<br />那作商人妇,愁水复愁风。<br />
</div>
<a href="javascript:void(0)" class="hide_more_shici">收起</a>
</div>
</div>'''
这样一行html代码,我想选择<div class="shici_content">
下的诗词内容,但又想去掉a标签下的“”展开全文“”和“收起”,。如果按传统的代码拾取所有内容,代码如下:
#coding=utf-8
from lxml import etree
html=''''<div class="shici_list_main">
<h3><a href="/chaxun/list/3075417.html" target="_blank">《长干行二首》</a></h3>
<div class="shici_content">
其一<br />妾发初覆额,折花门前剧。<br />
<a href="javascript:void(0)" class="show_more_shici">展开全文</a>
<div style="display: none">
郎骑竹马来,绕床弄青梅。<br />同居长干里,两小无嫌猜,<br />十四为君妇,羞颜未尝开。<br />低头向暗壁,千唤不一回。<br />十五始展眉,愿同尘与灰。<br />常存抱柱信,岂上望夫台。<br />十六君远行,瞿塘滟滪堆。<br />五月不可触,猿声天上哀。<br />门前迟行迹,一一生绿苔。<br />苔深不能扫,落叶秋风早。<br />八月胡蝶来,双飞西园草。<br />感此伤妾心,坐愁红颜老。<br />早晚下三巴,预将书报家。<br />相迎不道远,直至长风沙。<br />其二<br />忆妾深闺里,烟尘不曾识。<br />嫁与长干人,沙头候风色。<br />五月南风兴,思君下巴陵。<br />八月西风起,想君发扬子。<br />去来悲如何,见少离别多。<br />湘潭几日到,妾梦越风波。<br />昨夜狂风度,吹折江头树。<br />淼淼暗无边,行人在何处。<br />好乘浮云骢,佳期兰渚东。<br />鸳鸯绿蒲上,翡翠锦屏中。<br />自怜十五余,颜色桃花红。<br />那作商人妇,愁水复愁风。<br />
</div>
<a href="javascript:void(0)" class="hide_more_shici">收起</a>
</div>
</div>'''
r=etree.HTML(html)
content="\n".join(r.xpath("//div[@class='shici_list_main']/div//text()")).replace(" ","")
print(content)
打印出的效果如下(混进了我们不想要的内容):
其一
妾发初覆额,折花门前剧。
展开全文
郎骑竹马来,绕床弄青梅。
同居长干里,两小无嫌猜,
十四为君妇,羞颜未尝开。
低头向暗壁,千唤不一回。
十五始展眉,愿同尘与灰。
常存抱柱信,岂上望夫台。
十六君远行,瞿塘滟滪堆。
五月不可触,猿声天上哀。
门前迟行迹,一一生绿苔。
苔深不能扫,落叶秋风早。
八月胡蝶来,双飞西园草。
感此伤妾心,坐愁红颜老。
早晚下三巴,预将书报家。
相迎不道远,直至长风沙。
其二
忆妾深闺里,烟尘不曾识。
嫁与长干人,沙头候风色。
五月南风兴,思君下巴陵。
八月西风起,想君发扬子。
去来悲如何,见少离别多。
湘潭几日到,妾梦越风波。
昨夜狂风度,吹折江头树。
淼淼暗无边,行人在何处。
好乘浮云骢,佳期兰渚东。
鸳鸯绿蒲上,翡翠锦屏中。
自怜十五余,颜色桃花红。
那作商人妇,愁水复愁风。
收起
我们可以换一种思路,分别提取,再利用字符串的拼接功能,代码如下:
#coding=utf-8
from lxml import etree
html=''''<div class="shici_list_main">
<h3><a href="/chaxun/list/3075417.html" target="_blank">《长干行二首》</a></h3>
<div class="shici_content">
其一<br />妾发初覆额,折花门前剧。<br />
<a href="javascript:void(0)" class="show_more_shici">展开全文</a>
<div style="display: none">
郎骑竹马来,绕床弄青梅。<br />同居长干里,两小无嫌猜,<br />十四为君妇,羞颜未尝开。<br />低头向暗壁,千唤不一回。<br />十五始展眉,愿同尘与灰。<br />常存抱柱信,岂上望夫台。<br />十六君远行,瞿塘滟滪堆。<br />五月不可触,猿声天上哀。<br />门前迟行迹,一一生绿苔。<br />苔深不能扫,落叶秋风早。<br />八月胡蝶来,双飞西园草。<br />感此伤妾心,坐愁红颜老。<br />早晚下三巴,预将书报家。<br />相迎不道远,直至长风沙。<br />其二<br />忆妾深闺里,烟尘不曾识。<br />嫁与长干人,沙头候风色。<br />五月南风兴,思君下巴陵。<br />八月西风起,想君发扬子。<br />去来悲如何,见少离别多。<br />湘潭几日到,妾梦越风波。<br />昨夜狂风度,吹折江头树。<br />淼淼暗无边,行人在何处。<br />好乘浮云骢,佳期兰渚东。<br />鸳鸯绿蒲上,翡翠锦屏中。<br />自怜十五余,颜色桃花红。<br />那作商人妇,愁水复愁风。<br />
</div>
<a href="javascript:void(0)" class="hide_more_shici">收起</a>
</div>
</div>'''
r=etree.HTML(html)
#分别提取两部分,再转为字符串拼接
content = "\n".join(r.xpath("//div[@class='shici_list_main']/div/text()")).replace(' ', '').rstrip() + "\n".join(r.xpath("//div[@class='shici_list_main']/div/div/text()")).replace(' ', '')
print(content)
打印出的效果如下(非常整齐):
其一
妾发初覆额,折花门前剧。
郎骑竹马来,绕床弄青梅。
同居长干里,两小无嫌猜,
十四为君妇,羞颜未尝开。
低头向暗壁,千唤不一回。
十五始展眉,愿同尘与灰。
常存抱柱信,岂上望夫台。
十六君远行,瞿塘滟滪堆。
五月不可触,猿声天上哀。
门前迟行迹,一一生绿苔。
苔深不能扫,落叶秋风早。
八月胡蝶来,双飞西园草。
感此伤妾心,坐愁红颜老。
早晚下三巴,预将书报家。
相迎不道远,直至长风沙。
其二
忆妾深闺里,烟尘不曾识。
嫁与长干人,沙头候风色。
五月南风兴,思君下巴陵。
八月西风起,想君发扬子。
去来悲如何,见少离别多。
湘潭几日到,妾梦越风波。
昨夜狂风度,吹折江头树。
淼淼暗无边,行人在何处。
好乘浮云骢,佳期兰渚东。
鸳鸯绿蒲上,翡翠锦屏中。
自怜十五余,颜色桃花红。
那作商人妇,愁水复愁风。
上一篇: JSF入门七(国际化信息)
下一篇: 国际化信息