我一直在进行文本抓取,只是使用循环将文本写入CSV文件。例如(跳过很多代码-这仅用于说明):
for i in range(0,numresults):
a2 = soup.find_all('td')[0].string
a3 = soup.find_all('td')[1].string
file.write(str(i) + '|' + a2 + '|' + a3 + '\n')
然后,我可以使用R之类的格式打开此CSV文件。
但可以说,我想在python中创建一个矩阵。首先,在使用带有大量文本的数据时,最好使用pandas或NumPy吗?
其次,如何修改代码以不写入文件,而是创建熊猫和NumPy数组?
可以说文本最终是:
a11 = 1; a12 = 'a'; a13 = 'Text1'
a21 = 2; a22 = 'B'; a23 = 'Text2'
a31 = 3; a32 = 'c'; a33 = 'Text3'
a41 = 4; a42 = 'D'; a44 = 'Text4'
import numpy as np
import pandas
最后,我该如何将生成的熊猫和NumPy矩阵写入CSV文件?
似乎您正在使用BeautifulSoup从HTML获取表。我已经成功地使用Pandas从网页中提取表格。使用pandas doc中的示例(这里是链接):
In [1]: import pandas as pd
In [2]: tables = pd.read_html('http://www.fdic.gov/bank/individual/failed/banklist.html')
在这种情况下,tables
只有一个表。您可以print tables[0]
查看或tables[0].to_csv(local_csv_output)
另存为CSV文件。pd.read_html
可以读取URL(http ...)和本地HTML文件。
如果您有多个表格,只需通过打印手动找出所需的表格。
试试看,让我们知道。
如果您已经a11,a11,...
分配了变量(看起来很奇怪-应该在中list
),则可以创建pandas DataFrame:
In [38]: df = pd.DataFrame ([[a11,a12,a13],
[a21,a22,a23],
[a31,a32,a33],
[a41,a42,a44]],
columns=['Col1','Col2','Col3'])
In [39]: df
Out[39]:
Col1 Col2 Col3
0 1 a Text1
1 2 B Text2
2 3 c Text3
3 4 D Text4
并且df.to_csv('output_csv_file.csv')
将它保存到CSV文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句