硒vs.纽约大都会Op

2024-06-11 05:15:37 发布

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

首先,必须提前道歉-这里几乎是新手,这是我的第一个问题,请善待。。。你知道吗

我正在努力抓取javascript生成的页面,尤其是那些大都会歌剧院的时间表。对于任何给定的月份,我都希望创建一个日历,其中只包含产品的名称,以及演出的日期和时间。我向它扔了美丽之声和硒元素,我可以得到很多关于作曲家爱情生活的信息,等等-但不是这三个元素。任何帮助都将不胜感激。你知道吗

Link to a random month in their schedule


Tags: to名称信息元素产品时间link页面
1条回答
网友
1楼 · 发布于 2024-06-11 05:15:37

在网站上(将来)应该寻找的一件事是对API的调用。我打开chromedev工具(F12)并在Network选项卡中重新加载页面。你知道吗

我发现了两个api调用,一个用于“productions”,一个用于“events”。“事件”响应包含更多信息。下面的代码调用“events”端点,然后返回该数据的子集(具体地说,根据您的描述,标题、日期和时间)。你知道吗

我不知道你想用这些数据做什么,所以我把它打印出来了。让我知道,如果代码需要更新/修改,我会尽我最大的努力来帮助!你知道吗

我使用python3.6.4编写了这段代码

from datetime import datetime

import requests

BASE_URL = 'http://www.metopera.org/api/v1/calendar'
EVENT = """\
Title: {title}
Date:  {date}
Time:  {time}
       -\
"""


def get_events(*, month, year):
    params = {
        'month': month,
        'year': year
    }
    r = requests.get('{}/events'.format(BASE_URL), params=params)
    r.raise_for_status()
    return r.json()


def get_name_date_time(*, events):
    result = []
    for event in events:
        d = datetime.strptime(event['eventDateTime'], '%Y-%m-%dT%H:%M:%S')
        result.append({
            'title': event['title'],
            'date': d.strftime('%A, %B %d, %Y'),
            'time': d.strftime('%I:%M %p')
        })
    return result


if __name__ == '__main__':
    events = get_events(month=11, year=2018)
    names_dates_times = get_name_date_time(events=events)

    for event in names_dates_times:
        print(EVENT.format(**event))

控制台:

Title: Tosca
Date:  Friday, November 02, 2018
Time:  08:00 PM
       -
Title: Carmen
Date:  Saturday, November 03, 2018
Time:  01:00 PM
       -
Title: Marnie
Date:  Saturday, November 03, 2018
Time:  08:00 PM
       -
Title: Tosca
Date:  Monday, November 05, 2018
Time:  08:00 PM
       -
Title: Carmen
Date:  Tuesday, November 06, 2018
Time:  07:30 PM
       -
Title: Marnie
Date:  Wednesday, November 07, 2018
Time:  07:30 PM
       -
Title: Mefistofele
Date:  Thursday, November 08, 2018
Time:  07:30 PM
       -
Title: Tosca
Date:  Friday, November 09, 2018
Time:  08:00 PM
       -
Title: Marnie
Date:  Saturday, November 10, 2018
Time:  01:00 PM
       -
Title: Carmen
Date:  Saturday, November 10, 2018
Time:  08:00 PM
       -
Title: Mefistofele
Date:  Monday, November 12, 2018
Time:  07:30 PM
       -
Title: Tosca
Date:  Tuesday, November 13, 2018
Time:  07:30 PM
       -
Title: Les Pêcheurs de Perles  (The Pearl Fishers)
Date:  Wednesday, November 14, 2018
Time:  07:30 PM
       -
Title: Carmen
Date:  Thursday, November 15, 2018
Time:  07:30 PM
       -
Title: Mefistofele
Date:  Friday, November 16, 2018
Time:  07:30 PM
       -
Title: Tosca
Date:  Saturday, November 17, 2018
Time:  01:00 PM
       -
Title: Les Pêcheurs de Perles  (The Pearl Fishers)
Date:  Saturday, November 17, 2018
Time:  08:00 PM
       -
Title: Mefistofele
Date:  Monday, November 19, 2018
Time:  07:30 PM
       -
Title: Les Pêcheurs de Perles  (The Pearl Fishers)
Date:  Tuesday, November 20, 2018
Time:  08:00 PM
       -
Title: Il Trittico
Date:  Friday, November 23, 2018
Time:  07:30 PM
       -
Title: Les Pêcheurs de Perles  (The Pearl Fishers)
Date:  Saturday, November 24, 2018
Time:  01:00 PM
       -
Title: Mefistofele
Date:  Saturday, November 24, 2018
Time:  08:00 PM
       -
Title: Il Trittico
Date:  Monday, November 26, 2018
Time:  07:30 PM
       -
Title: Mefistofele
Date:  Tuesday, November 27, 2018
Time:  07:30 PM
       -
Title: Les Pêcheurs de Perles  (The Pearl Fishers)
Date:  Wednesday, November 28, 2018
Time:  07:30 PM
       -
Title: La Bohème
Date:  Thursday, November 29, 2018
Time:  07:30 PM
       -
Title: Il Trittico
Date:  Friday, November 30, 2018
Time:  07:30 PM
       -

作为参考,here is a link to the full JSON response from the events endpoint.您可能需要一些更有趣的信息,但我只是抓住了您在描述中要求的信息的子集。你知道吗

相关问题 更多 >