通过迭代几年的日期来创建url列表

2024-10-08 18:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

http://weather.ap.polyu.edu.hk/displayHandler.php?year=2018&month=8&date=19&optStation=6100&optElement=f1&isFlag=

大家好!我是一个建筑专业的学生,正在尝试从气象站的网站上删除一些数据。我对web-crawling了解不多,所以我尝试使用一个名为data miner的chrome扩展来下载下面链接的所有图像。你知道吗

要做到这一点,我首先需要创建一个包含所有链接的CSV文件,我想知道是否有一种更快的方法可以在Python中使用dates。你知道吗

从图中我们可以看到,所有这些链接的唯一变化参数是日期周期。对于日期,我需要它迭代整整3年。你知道吗

我试过用Python进行切片,但是有太多的语句让我困惑。所以我想知道导入date是否有帮助。有人介意告诉我如何迭代这些年,并将日-月-年准确地放入URL,最终得到一个CSV文件吗?你知道吗

我更喜欢用Python。你知道吗

非常感谢!你知道吗


Tags: 文件csvhttpdate链接yearapphp
1条回答
网友
1楼 · 发布于 2024-10-08 18:27:51

Python3

from datetime import datetime, timedelta
from urllib.parse import urlencode, urlparse, urlunparse


def all_dates(start_date, end_date):
    current_date = start_date
    one_day = timedelta(days=1)
    while current_date != end_date:
        yield current_date
        current_date += one_day
    yield current_date


def generate_url(date):
    base_url = 'http://weather.ap.polyu.edu.hk/displayHandler.php'
    parsed = urlparse(base_url)
    query = urlencode({
        'year': date.year,
        'month': date.month,
        'date': date.day,
        'optStation': 6100,
        'optElement': 'f1',
        'isFlag': ''
    })
    return urlunparse((
        parsed.scheme,
        parsed.netloc,
        parsed.path,
        parsed.params,
        query,
        parsed.fragment
    ))


if __name__ == '__main__':
    start_date = datetime(year=2015, month=1, day=1)
    end_date = datetime(year=2018, month=1, day=1)

    with open('outfile.csv', 'w') as f:
        for date in all_dates(start_date, end_date):
            f.write('{}\n'.format(generate_url(date)))

你没有回答确切的开始/结束日期,所以我只能猜一个例子(2015年1月1日-2018年1月1日)。您只需将这两个变量start_date&;end_date更改为 你想要什么都行。你知道吗

^{}

你也可以使用Python来下载这些图片,而不是使用chrome扩展,但是我现在试着保持这个答案的简单。你知道吗

相关问题 更多 >

    热门问题