【问题标题】:How to extract data from multiple pages which have date in their url?如何从 URL 中有日期的多个页面中提取数据?
【发布时间】:2021-11-26 10:26:23
【问题描述】:

我想从链接如下的网站中提取内容:

“www.example.com/getpublicreport?date=2021-10-01”

使用请求从多个页面中提取数据的代码应该是什么,我可以使用 url 中的日期进行导航。

例如,如果我想提取从日期 - 2019-01-01 到当前数据的数据,我该如何使用请求库编写代码来获取数据。

【问题讨论】:

    标签: python web-scraping beautifulsoup python-requests request


    【解决方案1】:

    www.example.com/getpublicreport?date=2021-10-01

    这是带有参数的 URL 示例,requests 确实有 params,您应该在其中提供带有键值对的 dict。您可以按如下方式访问它

    import requests
    url = "http://www.example.com/getpublicreport"
    parameters = {"date": "2021-10-01"}
    r = requests.get(url, params=parameters)
    print(r.url)  # http://www.example.com/getpublicreport?date=2021-10-01
    

    如果您想了解更多有关 URL 的信息,请阅读 RFC1738

    【讨论】:

    • 感谢您的信息。但是如何在两个特定日期之间提取特定数据?例如从 2019-01-01 到 2021-01-01 提取某个股票价格。我该怎么做?
    【解决方案2】:

    您好,您可以使用 datetime 包:)

    例如:

    import datetime
    
    import requests
    
    
    def extract_data(start_date, end_date):
        while start_date <= end_date:
            yield requests.get('www.example.com/getpublicreport?date=%s' % start_date.isoformat())
            start_date += datetime.timedelta(days=1)
    
    if __name__ == '__main__':
        for r in extract_data(datetime.date(2019, 01, 01), datetime.date.today()):
            print(r.content)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多