【问题标题】:Extracting text inside tags from html document从html文档中提取标签内的文本
【发布时间】:2021-08-08 18:08:33
【问题描述】:

我有一个这样的 html 文档:https://dropmefiles.com/wezmb 所以我需要在标签

from bs4 import BeautifulSoup

with open("10_01.htm") as fp:
    soup = BeautifulSoup(fp,features="html.parser")
    for a in soup.find_all('span'):
      print (a.string)

但它会从所有“跨度”标签中提取所有信息。那么,如何在 Python 中提取标签

【问题讨论】:

  • 您只使用名为“BeautifulSoup”的 Python 库中的函数,您是否考虑过只使用普通 Python 函数来解析文本?
  • @GeoffGriswald BeautifulSoup 已用于抓取网页。它无法解析文本,因为它不是为此目的而制作的。在决定回答主题中的问题之前,请先了解与主题(即网络抓取)对应的基本库。
  • 不,我没有考虑过使用简单的功能。你能帮忙用它们来解决这个问题吗?
  • @Terry 无需担心“普通 python 函数”,因为它们不会以简单的方式从 HTML 中提取文本,例如 bs4 允许您(通过使用 .find_all 和其他方法)。
  • @Samarth Bhatia 哦,好吧。谢谢帮忙!

标签: python html beautifulsoup tags extract


【解决方案1】:

您需要的是.contents 函数。 documentation

使用查找跨度<span id = "1"> ... </span>

for x in soup.find(id = 1).contents:
    print(x)

x = soup.find(id = 1).contents[0] # since there will only be one element with the id 1.
print(x)

这会给你:


10

即一个空行后跟 10 后跟另一个空行。这是因为 HTML 中的字符串实际上是这样的,并且在新行中打印 10,正如您在 HTML 中看到的那样,10 有其单独的行。
该字符串将正确地为'\n10\n'

如果你只想要x = '10'x = '\n10\n',你可以这样做:x = x[1:-1] 因为'\n' 是单个字符。希望这会有所帮助。

【讨论】:

  • 你能告诉我整个代码应该是什么样子吗?因为,只替换打印参数,它也输出了所有 html 标签的所有信息,但是在 [] 中并且以 /n 开头和结尾。但我只需要<span id = "1"></span> 这两个标签之间的文本,您可以在html 文档中看到。
  • 哦,好吧!我会看
  • @Terry 我已经编辑了我的答案以使其更好
  • 这真的很有帮助,但我有一个简单的问题:我可以使用这个 x 参数将 10 插入数据库列吗?
  • 是的,你是对的,最好提出新问题。非常感谢您的回答!这是新的问题链接,如果你能帮助我stackoverflow.com/questions/67606031/…
猜你喜欢
  • 2021-10-22
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多