解析列表中的数据python_将html数据解析成python列表进行操作

我会采取完全不同的方法。我们使用LXML来抓取html页面

我们切换的原因之一是因为BS有一段时间没有被维护,或者我应该说是更新了。在

在我的测试中,我运行了以下内容import requests

from lxml import html

from collections import OrderedDict

page_as_string = requests.get('http://www.marketwatch.com/investing/stock/goog/financials').content

tree = html.fromstring(page_as_string)

现在我看了一下页面,我看到数据分为两个表。既然你要EPS,我注意到它在第二个表中。我们可以编写一些代码以编程的方式解决这个问题,但我将留给您。在

^{pr2}$

现在我注意到第一行有列标题,所以我想将所有行分开table_rows = [ e for e in eps_table.iter() if e.tag == 'tr']

现在让我们获取列标题:column_headings =[ e.text_content() for e in table_rows[0].iter() if e.tag == 'th']

最后,我们可以将列标题映射到行标签和单元格值my_results = []

for row in table_rows[1:]:

cell_content = [ e.text_content() for e in row.iter() if e.tag == 'td']

temp_dict = OrderedDict()

for numb, cell in enumerate(cell_content):

if numb == 0:

temp_dict['row_label'] = cell.strip()

else:

dict_key = column_headings[numb]

temp_dict[dict_key] = cell

my_results.append(temp_dict)

现在来查看结果for row_dict in my_results:

if row_dict['row_label'] == 'EPS (Basic)':

for key in row_dict:

print key, ':', row_dict[key]

row_label : EPS (Basic)

2008 : 13.46

2009 : 20.62

2010 : 26.69

2011 : 30.17

2012 : 32.81

5-year trend :

现在还有更多的事情要做,例如我没有测试平方(每行中的单元格数相等)。在

最后,我是一个新手,我怀疑其他人会建议更直接的方法来获取这些元素(xPath或cssselect),但这确实有效,它以一种良好的结构化方式从表中获取所有内容。在

我应该补充一点,表中的每一行都是可用的,它们是按原始行顺序排列的。my_results列表中的第一项(字典)包含第一行的数据,第二项包含第二行的数据等

当我需要一个新版本的lxml时,我会访问一个由一个非常好的人维护的页面UC-IRVINE

我希望这有帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值