Python - 从页面中的特定表中提取数据

时间:2017-07-23 12:42:48

标签: python beautifulsoup

刚开始学习python。整个周末花了这个项目,但进展很糟糕。希望能从社区获得一些指导。

我的部分教程要求我从Google财经页面中提取数据。 https://www.google.com/finance。但只有部门汇总表。然后将它们组织成一个JSON转储。

到目前为止我遇到的问题是:

1)如何仅从扇区汇总表中提取数据?我可以find_all使用但结果返回包括其他表。

2)我如何获得每个部门的变化,即:(能源:0.99%,基本材料:0.31%,工业:0.17%)。没有我可以使用的唯一标签。唯一的字符是这些数字与扇区名称

相同

1 个答案:

答案 0 :(得分:0)

查看页面(使用View Source或浏览器的开发者工具),我们知道一些事情:

  • 行业摘要表是div标记中id=secperf唯一的一个(可能是'行业效果'的缩写)。
  • 对于除第一行以外的每一行,左边的第一个单元格包含扇区名称;左边的第二个包含更改百分比。
  • 其他单元格可能包含条形图。条形图也恰好是表格,但我们想忽略它们,所以我们不应该进入它们。

有很多方法可以解决这个问题。一种方法如下:

def sector_summary(document):
    table = document.find(id='secperf').find('table')
    rows = table.find_all('tr', recursive=False)

    for row in rows[1:]:
        cells = row.find_all('td')

        sector = cells[0].get_text().strip()
        change = cells[1].get_text().strip()

        yield (sector, change)

print(dict(sector_summary(my_document)))