采集的内容里有以下内容,怎么把这些用正规则替换为空或去掉?

2020-06-23 23:30:54 +08:00
 python30

采集的内容里面有以下内容。 把下面内容用正规则全部去掉 写了好多都不完美成功。 一个正规则去不掉可以用多个。 谢谢。

<div class="art_xg">
                        <h4>您可能感兴趣的文章:</h4><ul><li><a href="/article/179849.htm" title="解决 Keras 与 Tensorflow 版本之间的兼容性问题" target="_blank">解决 Keras 与 Tensorflow 版本之间的兼容性问题</a></li><li><a href="/article/188419.htm" title="使用 Keras 加载含有自定义层或函数的模型操作" target="_blank">使用 Keras 加载含有自定义层或函数的模型操作</a></li><li><a href="/article/188469.htm" title="完美解决 keras 保存好的 model 不能成功加载问题" target="_blank">完美解决 keras 保存好的 model 不能成功加载问题</a></li><li><a href="/article/188792.htm" title="解决 Keras 自定义层时遇到版本的问题" target="_blank">解决 Keras 自定义层时遇到版本的问题</a></li></ul>
                        </div>
						<div class="lbd_bot clearfix">
						<span id="art_bot" class="jbTestPos"></span>
						</div>
					</div>
2040 次点击
所在节点    Python
11 条回复
volvo007
2020-06-23 23:34:59 +08:00
不要自己写正则,用 BeautifulSoup 这种库,把内容解析为规则的数据结构之后用库的方法去获取内容
arrow8899
2020-06-23 23:36:12 +08:00
为什么要用正则这么麻烦呢,直接用 xml 把这两个 node 删掉不行吗?
python30
2020-06-23 23:39:54 +08:00
@volvo007
@arrow8899
我是用 scrapy 取的内容的
ericls
2020-06-24 00:01:32 +08:00
imn1
2020-06-24 02:07:16 +08:00
r'''<div class="art_xg">[\s\S]+?id="art_bot"[^>]+>\s*</span>\s*</div>\s*</div>'''
试一下这个,用多行匹配的 flag
no1xsyzy
2020-06-24 02:38:46 +08:00
html 允许无限递归,请检查你的正则实现是否支持递归。
大多是不支持的。
hyperbin
2020-06-24 08:41:59 +08:00
这歌问题是我找不到任何用正则的理由
pwli
2020-06-24 08:59:11 +08:00
xpath 了解一下
volvo007
2020-06-24 10:02:21 +08:00
@python30 一样的,这种“长得像”html 的东西都可以丢给 beautifulsoup 。注意到下面的图片里,x 并不是一个完整的 html 文档,一样可以解析
volvo007
2020-06-24 11:14:23 +08:00
不知道为啥发不了图片,要用 markdown 发吗?
那这里补充一条文字版的:
[code]
soup = bs(x, 'lxml') # 假设这里的 x 是你获得的内容,扔给 beautifulsoup
[/code]

[code]
soup

# return:
<html><body><div class="art_xg">
<h4>您可能感兴趣的文章:</h4>
<ul>
<li><a href="/article/179849.htm" target="_blank" title="解决 Keras 与 Tensorflow 版本之间的兼容性问题">解决 Keras 与 Tensorflow 版本之间的兼容性问题</a></li>
<li><a href="/article/188419.htm" target="_blank" title="使用 Keras 加载含有自定义层或函数的模型操作">使用 Keras 加载含有自定义层或函数的模型操作</a></li>
<li><a href="/article/188469.htm" target="_blank" title="完美解决 keras 保存好的 model 不能成功加载问题">完美解决 keras 保存好的 model 不能成功加载问题</a></li>
<li><a href="/article/188792.htm" target="_blank" title="解决 Keras 自定义层时遇到版本的问题">解决 Keras 自定义层时遇到版本的问题</a></li>
</ul>
</div>
<div class="lbd_bot clearfix">
<span class="jbTestPos" id="art_bot"></span>
</div>
</body></html>
[/code]

[code]
soup.h4.text

# return: 用 .h4 方法可以获得页面中的 h4 标题。其他方法去查下官方手册,都很方便
'您可能感兴趣的文章:'
[/code]
python30
2020-06-24 15:00:25 +08:00
谢谢各位,已经解决了
用两个方法都可以
一是先全部采集到内容
然后再采集到 <div class="art_xg">....</div>里面的内容
然后匹配替换

另一个是用 @imn1
写的正规则
直接完成。谢谢各位。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/684291

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX