Python-遍历变量以获取多个get请求

时间:2019-12-25 13:12:54

标签: python web-scraping python-requests

我正在尝试在多个活动日期中取消门票的可用性。

每个事件日期都有其自己的eventID,因此对于23个可能的日期,事件ID为1001-1023

我已经开始手动进行此操作,下面给出了给定日期的所有席位,但是重复22次并不是最有效的方法。

import requests
import json 

f = open('tickets.txt','a')

r = requests.get('https://www.website.com/events/1000/tickets/seatmap?sectionid=3')
d = json.loads(r.text)
zones = d['zones']
for key, value in zones.iteritems() :
    print >>f, (key, value)

我想遍历eventID并一次打印所有日期的所有可用性。但是,我无法建立请求/ URL。到目前为止,我已经创建了:

eventIDs =  range(1001, 1023)
baseurl = "https://www.website.com/events/"
sectionId = "/tickets/seatmap?sectionId=3"

更新:我认为我已经到了,这我认为行得通...

for i in eventIDs:
    url=baseurl+str(i)+sectionId
    r = requests.get(url) 
    d = json.loads(r.text)
    print >>f, (d)

这是最好的方法吗?任何帮助,不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

您应该考虑让您的休息呼叫异步。如果您想坚持requests风格,可以使用grequests

# Python3
import grequests

event_ids =  range(1001, 1023)
base_url = "https://www.website.com/events/"
section_id = "/tickets/seatmap?sectionId=3"
# Create an array of urls
urls = [base_url + str(i) + section_id for i in event_ids ]
# Preapare requests
rs = (grequests.get(u) for u in urls)
# Send them
results = grequests.map(rs)

或者您可以将asyncioaiohttp结合使用。如果您对此感兴趣并想查看它的外观,可以访问this question