从BeautifulSoup extract在Python中创建数据帧

从BeautifulSoup extract在Python中创建数据帧,python,pandas,list,dataframe,Python,Pandas,List,Dataframe,我能够使用BeautifulSoup从web上提取数据和单词列表。数据收集在组件同义词[i].text中。但是,当我想将提取的数据转换为数据帧时,我会将单词拆分为字母,而不是完整的单词。如何将数据转换为适当数据框中的适当单词列表,即“analysis”等单词在数据框中作为“analysis”,而不是拆分为“a”、“n”、“a”、“l”、“y”、“s”、“e” import requests from bs4 import BeautifulSoup import pandas as pd pag

我能够使用BeautifulSoup从web上提取数据和单词列表。数据收集在组件同义词[i].text中。但是,当我想将提取的数据转换为数据帧时,我会将单词拆分为字母,而不是完整的单词。如何将数据转换为适当数据框中的适当单词列表,即“analysis”等单词在数据框中作为“analysis”,而不是拆分为“a”、“n”、“a”、“l”、“y”、“s”、“e”

import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("https://www.wordhippo.com/what-is/another-word-for/guard.html")
soup = BeautifulSoup(page.content, 'html.parser')


keyword = "guard"

synonyms = soup.select('.relatedwords')
for i in range(0, 1):
              print ('synonyms section ' + str(i + 1))
              print pd.DataFrame((list(synonyms[i].text)))

#Output that I need to convert into a DataFrame
synonyms section 1

fighter
trooper
warrior
serviceman

#The Output I am getting in the list

提前感谢。

我想您需要先删除第一个和最后一个\n,然后拆分单词列表:

for i in range(0, 1):
    print ('synonyms section ' + str(i + 1))
    print (pd.DataFrame({'text': synonyms[i].text.strip().split()}))
    
          text
0     guardian
1    custodian
2       warden
3       keeper
4       sentry
..         ...
211    soldier
212       park
213     ranger
214       more
215          ❯

[216 rows x 1 columns]
如果需要将所有值添加到DataFrame,请使用extend方法将列表添加到L列表,然后在循环外部调用DataFrame构造函数:

L = []
for i, syno in enumerate(synonyms):
    print ('synonyms section ' + str(i + 1))
    L.extend(syno.text.strip().split())

df = pd.DataFrame({'text':L})
print(df)
           text
0      guardian
1     custodian
2        warden
3        keeper
4        sentry
        ...
7667  Languages
7668          g
7669         gu
7670        gua
7671       guar

[7672 rows x 1 columns]
把这个词记在单子上

syno_list = list()
for i, syno in enumerate(synonyms):
    print ('synonyms section ' + str(i + 1))
    word_list = syno.text.strip().split()
    syno_list.append(word_list)
    print(word_list)

请从下一页重复和。演示如何解决这个编码问题?与堆栈溢出无关。您必须诚实地尝试解决方案,然后询问有关实现的特定问题。您还需要指定您的问题。为初学者显示输入和所需输出。没有理由在你的帖子中包含请求和BeautifulSoup,因为它们不是你问题的一部分。只需对“同义词”的示例列表进行硬编码,然后从中提问即可。@Prune。我正在使用beautifulsoup提取数据。但我会添加一个硬编码列表,如果这样做更容易。谢谢你帮我解答我的问题。我进一步更新了我的问题。谢谢你帮我构思我的问题。我投票赞成重新开放,因为答案经过编辑/改进。非常感谢@jezrael!这就解决了我的问题。谢谢你帮我处理这个@Ferris。