【问题标题】:BeautifulSoup Python to DataframeBeautifulSoup Python 到数据框
【发布时间】:2019-03-15 05:05:51
【问题描述】:

我正在尝试将抓取的数据转换为 pd 数据框(表)。 信息是通过 beautifulsoup 从不同的标签(a、span、div)中检索到的。 for ul in soup_level1.find('ul', {'class':"fix3"}):

divjt=ul.find('div',{'class':"topb"})
a=divjt.find('a')
trajectory=a.text.strip()
divloc=ul.find('div',{'class':"under"})
d=divloc.find('div')
sp=ul.find('span',{'class':"blk"})
object=sp.text.strip()
try: 
    sas=ul.find_all('span',{'class':"f1"}) 
    timex=sas[0].text 
except IndexError: 
    timex=''
datalist.append[jobtitle,city,timex]
headers=['Traj', 'Object', 'Time']
A=[trajectory]
B=[object]
C=[timex]
datac=A+B+C
df = pd.DataFrame(datac)

print(df) 

我现在得到的结果是

 0
0  BRD - TWD
1                          MER
2                         11/10/2018
                                                   0
0  SFX - NYT
1                                               MER
2                                        10/05/2016
                  0
0  GER - BEN
1              MER
2             05/06/2016

我基本上想将这些结果“转储”到适当的数据框表中 其中每一行都相应地打印到excel。

0  BRD - TWD    MER    11/10/2018
1  SFX - NYT    MER    10/05/2016
2  GER - BEN    MER    05/06/2016

谢谢!

【问题讨论】:

  • 请分享正在解析它的网页链接以查看标签布局,否则将很难提供帮助。

标签: python pandas beautifulsoup


【解决方案1】:

我找到了一个解决方案——只需要附加值,然后导出到 csv 就很容易了。

    A.append(trajectory)
    B.append(object)
    C.append(timex)

    test_df = pd.DataFrame({'Col1': A,
                           'Col2': B,
                           'Col3': C})
    test_df.to_csv('file_name.csv') 

【讨论】:

    【解决方案2】:

    尝试使用zip 而不是datac=A+B+C。 喜欢

    zip(A, B, C)
    

    【讨论】:

    • 感谢 Zheka,这解决了我包装 df = pd.DataFrame(list(zip(A,B,C))) 后的部分问题。但是我仍然缺少有序的编号,每行前面都有 0,而我期待一个计数。
    • @ThinkPad 试试stackoverflow.com/questions/20167930/…。它可能会对你有所帮助。
    【解决方案3】:

    如果您希望 Excel 中的数据使用 csv 格式,可以在 excel/Libre office 中打开一个 csv 文件以获得所需的结果

    var row =  value1 + ":" + value2 + ":" + value3  ;
       await fs.appendFile('file_name.csv', row + os.EOL, function (err) {
        if (err) throw err;
       });
    

    这就是我在 Javascript 中的做法。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多