请帮助我从下载数据 https://fedstat.ru/indicator/31448 使用python。 这是具有消费者价格历史记录的俄罗斯统计服务。 我做不到。
这是我的陷阱:
https://fedstat.ru/indicator/data.do?format=excel
但是发送带有诸如“产品”,“俄罗斯地区”,“时间段”之类的参数的特定请求无济于事。
我认为urllib.request会对我有所帮助,但这在这里没有用。
答案 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进行登录,导航至下载页面,选择所需的参数,然后单击指向电子表格的链接。