【问题标题】:BS4 breaks HTML trying to repair itBS4 打破 HTML 试图修复它
【发布时间】:2021-04-27 22:11:56
【问题描述】:

BS4 更正了错误的 html。通常这不是问题。我尝试解析、更改和保存此页面的 html:ulisses-regelwiki.de/index.php/sonderfertigkeiten.html 在这种情况下,修复会更改表示。修复后页面多行不再居中,而是左对齐。 由于我必须处理所述页面的损坏的 html,我不能简单地修复 html 代码。

如何防止 bs4 修复 html 或以某种方式修复“更正”?

(这个最小的例子只是显示 bs4 修复损坏的 html 代码;我无法创建一个最小的例子,其中 bs4 以错误的方式执行此操作,就像上面提到的页面一样)

#!/usr/bin/env python3
from bs4 import BeautifulSoup


html = '''
<!DOCTYPE html>
<center>
Some Test content
<!-- A comment -->
<center>
'''

def is_string_only(t):
    return type(t) is NavigableString

soup = BeautifulSoup(html, 'lxml') #or html.parse

print(str(soup))

【问题讨论】:

    标签: python html parsing web-scraping beautifulsoup


    【解决方案1】:

    试试这个库。

    from simplified_scrapy import SimplifiedDoc
    
    html = '''
    <!DOCTYPE html>
    <center>
    Some Test content
    <!-- A comment -->
    <center>
    '''
    doc = SimplifiedDoc(html)
    print (doc.html)
    

    这里有更多示例:https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

    【讨论】:

    • 您是在建议使用 simple_scrapy 而不是 bs4 对吗?遗憾的是,我不能轻易地从 bs4 更改为另一个库,因为该程序确实比最小示例复杂得多。
    • @Natan 发送您的完整要求以查看:)
    • 嗯。我需要删除 html 代码的某些部分并添加其他部分。所有这一切都是通过访问某些标签来实现的。我上面的意思是更改 bs4 将意味着更改大量代码:) 所以 bs4 中的解决方案会很棒。无论如何,如果您确定 simple_scrapy 做得更好并且可以做我需要做的事情,我可能会看看。
    • @Natan 两个可以一起用,不用换一个。
    • 谢谢 :) 这可能是我应该提出一个新问题的地方。我不知道如何将简化的文档转换为 beautifulsoup stackoverflow.com/questions/66135288/… 也许你也可以帮助我:) 已经非常感谢了!
    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多