【发布时间】:2021-09-29 08:16:41
【问题描述】:
我正在通过链接列表抓取一个网站,总共 442 个链接。在每个链接中都有数据框,通过使用 pd.read_html() 我设法拉出数据框。所以我尝试循环所有链接并抓取所有数据框并加入它们,但是在完成所有操作后,我发现某些链接的数据框位置不同,我无法提取数据框。我该如何解决这个问题。很抱歉,如果我无法清楚地解释它,但这是我的脚本:
allin = []
for link in titlelink :
driver.get(link)
html = driver.page_source
soup = bs(html, 'html.parser')
iframe = soup.find('iframe')['src']
#open iframe
openiframe = driver.get(iframe)
iframehtml = driver.page_source
print('fetching --',link)
#using pandas read html ang get table
All = pd.read_html(iframehtml)
try :
table1 = All[1].set_index([0, All[1].groupby(0).cumcount()])[1].unstack(0)
except :
table1 = All[2].set_index([0, All[2].groupby(0).cumcount()])[1].unstack(0)
try :
table2 = All[3].set_index([0, All[3].groupby(0).cumcount()])[1].unstack(0)
except :
pass
df = table1.join(table2)
try :
df['Remarks'] = All[2].iloc[1]
except :
df['Remarks'] = All[3].iloc[1]
allin.append(df)
finaldf = pd.concat(allin, ignore_index=True)
print(finaldf)
finaldf.to_csv('data.csv', index=False)
另外,我已将所有链接导出到 csv 并附在此处(https://drive.google.com/file/d/1Tk2oKVEZwfxAnHIx3p2HbACE6vOrJq5A/view?usp=sharing),以便您更清楚地了解我所面临的问题。感谢您的所有帮助。
【问题讨论】:
-
您想将
Proposed company name,Remarks,Announcement Info合并为一个DataFrame? -
@Xitiz 是的,但是它的某些链接具有额外的功能,即“Admission Sponsor”和“Sponsor”
-
你也想在你的最终
df中添加它吗? -
@Xitiz 是的,我想在最终的 df 中添加所有内容,包括额外的功能
标签: python pandas dataframe selenium beautifulsoup