【问题标题】:how to crawl through html string content (tag by tag) using python如何使用python爬取html字符串内容(逐个标签)
【发布时间】:2020-04-30 13:53:13
【问题描述】:

我有 html 字符串,想找到文本元素并用标记替换。我使用 beautifulsoup 来获取数据,但 get_text 只给出文本而不是相应的元素。如何遍历从根节点到最后一个节点的 html 字符串并找出要替换为我定义的标记的文本元素。 我从源代码中获取动态大 html 字符串。已经给出了一个小例子

<html>
<body>
<p>Hi</p>
<p>Hello</p>
</body>
</html>

To
----
<html>
<body>
<p>Token1</p>
<p>Token2</p>
</body>
</html>

【问题讨论】:

标签: python python-3.x html-parsing html-parser


【解决方案1】:

您可能正在寻找这样的东西:

from bs4 import BeautifulSoup as bs
subst = """
<html>
<body>
<p>Hi</p>
<p>Hello</p>
</body>
</html>
"""
tokens = ['Token1','Token2']
soup = bs(subst, 'lxml')
targets = soup.find_all('p')
for target in targets:
    loc=targets.index(target)
    target.string.replace_with(tokens[loc])    
print(soup)

输出:

<html>
<body>
<p>Token1</p>
<p>Token2</p>
</body>
</html>

【讨论】:

  • html 字符串是动态的,意味着它并不总是包含 p 标签。代码应该遍历所有标签并找到文本元素并使用我拥有的令牌进行更新
  • @BobbyNagendra - 你应该在你的问题中清楚地说明这一点,并有一个代表实际字符串的 html 字符串。请相应地编辑您的问题。
  • 我在问题中提到过
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2017-02-02
  • 2022-11-18
  • 1970-01-01
  • 2015-07-07
  • 2022-11-20
  • 1970-01-01
相关资源
最近更新 更多