2024-09-28 19:07:56 发布
网友
首先,必须提前道歉-这里几乎是新手,这是我的第一个问题,请善待。。。你知道吗
我正在努力抓取javascript生成的页面,尤其是那些大都会歌剧院的时间表。对于任何给定的月份,我都希望创建一个日历,其中只包含产品的名称,以及演出的日期和时间。我向它扔了美丽之声和硒元素,我可以得到很多关于作曲家爱情生活的信息,等等-但不是这三个元素。任何帮助都将不胜感激。你知道吗
Link to a random month in their schedule
在网站上(将来)应该寻找的一件事是对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.您可能需要一些更有趣的信息,但我只是抓住了您在描述中要求的信息的子集。你知道吗
在网站上(将来)应该寻找的一件事是对API的调用。我打开chromedev工具(F12)并在Network选项卡中重新加载页面。你知道吗
我发现了两个api调用,一个用于“productions”,一个用于“events”。“事件”响应包含更多信息。下面的代码调用“events”端点,然后返回该数据的子集(具体地说,根据您的描述,标题、日期和时间)。你知道吗
我不知道你想用这些数据做什么,所以我把它打印出来了。让我知道,如果代码需要更新/修改,我会尽我最大的努力来帮助!你知道吗
我使用python3.6.4编写了这段代码
控制台:
作为参考,here is a link to the full JSON response from the events endpoint.您可能需要一些更有趣的信息,但我只是抓住了您在描述中要求的信息的子集。你知道吗
相关问题 更多 >
编程相关推荐