【发布时间】:2018-05-13 15:38:32
【问题描述】:
请参阅下面我目前拥有的以下代码以及随之而来的错误。
companynames = []
for x in urls:
website_nametext = requests.get(x)
all_text = website_nametext.text
all_soup = BeautifulSoup(all_text, 'html.parser')
companynames.append(all_soup.h1.get_text())
overall_data = pd.DataFrame(data=[companynames], columns=['Company Name'])
我收到以下错误
AssertionError: 1 columns passed, passed data had 3 columns
如果我要更改代码以放置三列,那么它允许创建数据框。请参阅下面的代码。
companynames = []
for x in urls:
website_nametext = requests.get(x)
all_text = website_nametext.text
all_soup = BeautifulSoup(all_text, 'html.parser')
companynames.append(all_soup.h1.get_text())
overall_data = pd.DataFrame(data=[companynames], columns=['Company Name', 'Company Name', 'Company Name'])
但是,我希望结果 'x' 、 'y' 和 'z' 位于一列中,并且每个名称位于单独的行中。而不是根据我的初始代码有三个单独的列,但显然这会产生错误。
我该怎么做?
【问题讨论】:
-
你的意思是
data=companynames? -
你能展示一下
companynames的样子吗?很难说该怎么做,但您可以尝试使用 more_itertools 将其展平 -
当您打印 (companynames) 时,这是输出 -- ['Etimex ', 'Comptage Immobilier Services (CIS) ', 'Salter Housewares ']
标签: python python-3.x pandas for-loop beautifulsoup