Создание списка URL путем повторения даты в течение нескольких лет - PullRequest
0 голосов
/ 22 сентября 2018

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

Привет всем!Я студент архитектуры, который пытается собрать некоторые данные с сайта метеостанции.Я не очень много знаю о web-crawling, поэтому я пытаюсь использовать расширенный хром под названием data miner, чтобы загрузить все изображения по следующей ссылке вниз.

Для этого мне сначала нужно создатьCSV-файл, содержащий все ссылки, и мне интересно, есть ли более быстрый способ сделать это, используя dates в Python.

Как видно из изображения, единственный изменяющийся параметр для всех этих ссылокбудет период даты.На сегодняшний день мне нужно, чтобы он повторялся в течение 3 полных лет.

Я пробовал нарезать фрагменты в Python, но слишком много утверждений сбивает меня с толку.Поэтому мне интересно, может ли импорт date помочь с этим.Кто-нибудь возражает показать мне, как я могу повторить эти годы и точно вписать год-месяц в URL-адрес, и в итоге получить файл CSV?

Я предпочитаю использовать Python.

Спасиботак много!

1 Ответ

0 голосов
/ 23 сентября 2018

Python 3

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)))

Вы не ответили о том, какими должны быть точные даты начала / окончания, поэтому мне просто пришлось угадать пример (1 января 2015 - 1 января 2018).Вы можете просто изменить эти две переменные, start_date & end_date, на все, что вы хотите.

outfile.csv

Вы также можете использовать Python для загрузки этих изображений вместоиспользуя расширение chrome, но я постарался пока оставить этот ответ простым.

...