我正在尝试从网站上抓取一些数据并设法收集重要信息,但当我将其打印到excel文件中时,数据只会流入一列。是否有提供的代码的解决方案或我将需要创建多个结果,然后打印出来。
我对网络抓取很新,我试图使用.join
,它刚刚将所有数据放入我想要的一行,但是它全部连接成一列
totals = page_soup.findAll("p", {"class":"b-fight-details__table-text"})
for i in totals:
stats = i.text.replace("\n"," ")
print(stats, end= " ")
f.write(stats)
f.close()
Stephen Thompson Anthony Pettis 0 1 47 of 107 32 of 55 43% 58% 47 of 107
输出当前是这个,但它全部卡在一列我希望它如下,显然我将在输出的代码中有标题
Fighter A Fighter B KD TKD S TS
Stephen Thompson Anthony Pettis 0 1 47 of 107 32 of 55 43% 58% etc...
您可以尝试替换代码行:print(stats)by print(stats,end =“”)
只需更改打印结束即可
for i in totals:
stats = i.text.strip()
print(stats, end = " ")
#...#
它应该工作。
如果你想在你写的输出文件中使用相同的替换:
f.write(stats + " ")
有:
f.write(stats + " ")
例如:
with open("out.txt", "w") as f:
for i in totals:
stats = i.text.strip()
print(stats, end = " ");
f.write(stats + " ")
如果字符串本身包含“\ n”字符,则可以替换它们:
with open("out.txt", "w") as f:
for i in totals:
stats = i.replace("\n", " ")
print(stats, end = " ");
f.write(stats + " ")
如果只做一次,你对这个布局感到满意(p标签分隔的内容最终在同一个单元格中)...你可以使用熊猫
import pandas as pd
tables = pd.read_html('http://www.ufcstats.com/fight-details/56ae02578b1163ee')
df = tables[0]
df.to_csv(r'C:\Users\User\Desktop\data.csv', sep=',', encoding='utf-8-sig',index = False )
如果你想使用pandas追加多场战斗,请看这个答案: