V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
python30
V2EX  ›  Python

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

  •  
  •   python30 · 2020-06-23 23:30:54 +08:00 · 1342 次点击
    这是一个创建于 574 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    <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>
    
    11 条回复    2020-06-24 15:00:25 +08:00
    volvo007
        1
    volvo007  
       2020-06-23 23:34:59 +08:00
    不要自己写正则,用 BeautifulSoup 这种库,把内容解析为规则的数据结构之后用库的方法去获取内容
    arrow8899
        2
    arrow8899  
       2020-06-23 23:36:12 +08:00
    为什么要用正则这么麻烦呢,直接用 xml 把这两个 node 删掉不行吗?
    python30
        3
    python30  
    OP
       2020-06-23 23:39:54 +08:00
    @volvo007
    @arrow8899
    我是用 scrapy 取的内容的
    imn1
        5
    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
        6
    no1xsyzy  
       2020-06-24 02:38:46 +08:00
    html 允许无限递归,请检查你的正则实现是否支持递归。
    大多是不支持的。
    hyperbin
        7
    hyperbin  
       2020-06-24 08:41:59 +08:00 via Android
    这歌问题是我找不到任何用正则的理由
    pwli
        8
    pwli  
       2020-06-24 08:59:11 +08:00
    xpath 了解一下
    volvo007
        9
    volvo007  
       2020-06-24 10:02:21 +08:00 via iPhone
    @python30 一样的,这种“长得像”html 的东西都可以丢给 beautifulsoup 。注意到下面的图片里,x 并不是一个完整的 html 文档,一样可以解析
    volvo007
        10
    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
        11
    python30  
    OP
       2020-06-24 15:00:25 +08:00
    谢谢各位,已经解决了
    用两个方法都可以
    一是先全部采集到内容
    然后再采集到 <div class="art_xg">....</div>里面的内容
    然后匹配替换

    另一个是用 @imn1
    写的正规则
    直接完成。谢谢各位。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2755 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    ♥ Do have faith in what you're doing.