如何将HTML文档的特定内容放入 Dataframe ?

yh2wf1be  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(121)

我想从HTML代码中提取特定的信息到dataframe python中,但我不能使用BeautifulSoup或webscraping技术,因为我不知道信息的位置,我还想拥有与每个信息相关的标签和属性。例如,如果我想获取一本书的价格,而HTML代码包含了描述它的这一行:

<span class="sc-price_3mJ9Z">$12.90<\span>

我的 Dataframe 应该是这样的:
Tag:变量名
属性:类
取值:sc-价格_3mJ9Z
内容:十二元九角
显然,这是一个与自然语言处理有关的问题,但我不知道如何处理它。

mrphzbgm

mrphzbgm1#

  • 问题应改进,因为需要更多细节来澄清并获得更具体的答案 *

如果你真的需要使用NLP,我会看到一个子规程NER-但是因为它是用文本而不是HTML工作的,你可能必须弄清楚需要什么来解决你的具体问题:

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp('$12.90 some information $120.90')

for ent in doc.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

->12.90 1 6 MONEY
->120.90 25 31 MONEY

基于问题的详细程度

它可能不需要NLP,使用BeautifulSoup保持简单,因为你有一个模式(货币符号),可以涵盖大多数情况。选择你喜欢的元素:

soup.select(':-soup-contains-own("$")')

并且用.attrs提取其属性/值,用.text提取其内容。

示例
  • 问题中缺少代码的原因,这应该只指向如何覆盖的方向。*
from bs4 import BeautifulSoup
import pandas as pd

html='''
<span class="sc-price_3mJ9Z">$12.90</span>
<div id="price">$120.90</div>
'''
soup = BeautifulSoup(html)

data = []
for e in soup.select(':-soup-contains-own("$")'):
    d = e.attrs
    d.update({'tag':e.name,'content':e.text})
    data.append(d)
pd.DataFrame(data)
输出

| | 类|标签|内容|身份证|
| - ------|- ------|- ------|- ------|- ------|
| 无|[“sc-价格_3 mJ 9 Z ']|跨距|十二块九毛|楠|
| 1个|楠|分度|一百二十块九毛|价格|

相关问题