解析统计信息网站

时间:2019-06-06 21:12:20

标签: python parsing web python-requests

请帮助我从下载数据 https://fedstat.ru/indicator/31448 使用python。 这是具有消费者价格历史记录的俄罗斯统计服务。 我做不到。

这是我的陷阱:

  1. fedstat网站上的授权

  2. 我按下了下载按钮: enter image description here

  3. 然后在下载中我看到了url: enter image description here

https://fedstat.ru/indicator/data.do?format=excel

但是发送带有诸如“产品”,“俄罗斯地区”,“时间段”之类的参数的特定请求无济于事。

我认为urllib.request会对我有所帮助,但这在这里没有用。

1 个答案:

答案 0 :(得分:1)

以编程方式从网站导航和提取内容的任务称为“网络抓取”。用于执行此操作的工具称为“网络蜘蛛”或“网络搜寻器”。网站太复杂了,您无法使用urllib之类的工具来做到这一点。该下载URL只是为指定下载文件而创建的状态的一部分。

相反,请尝试使用Scrapy之类的工具(与pip install scrapy一起安装)。

使用以下内容创建scraper.py

import scrapy

class FedStatSpider(scrapy.Spider):
    name = "fedstat_spider"
    start_urls = ['https://fedstat.ru/indicator/31448']

使用scrapy runspider scraper.py运行它,然后研究输出。您会看到它是否至少能够连接-应该有一行显示[scrapy] DEBUG: Crawled (200) <GET https://fedstat.ru/indicator/31448> (referer: None)或类似字词的行。

您可能会发现需要先登录。为此,请将start_urls更改为https://fedstat.ru/user/login,并向您的def parse(self, response):类添加一个FedStatSpider函数,该函数将返回一个scrapy.FormRequest.from_response和适当的formdata 。网上有很多指南。

最终,您将使用Spider进行登录,导航至下载页面,选择所需的参数,然后单击指向电子表格的链接。