python - Python - 循环变量以获取多个获取请求
问题描述
我正在尝试跨多个活动日期抓取门票可用性。
每个事件日期都有自己的 eventID,因此对于 23 个可能的日期,eventids 是 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)
这是最好的方法吗?非常感谢任何帮助。谢谢。
解决方案
你应该考虑让你的休息调用async。如果你想坚持requests
-ish 风格,你可以使用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)
推荐阅读
- python - 当 AWS::CustomResource 具有列表类型输出时如何获取选择性项目
- java - 如果在 java 中 m = 5,-m-- 的输出是什么?
- c++ - GCC 扩展内联汇编 - “mov 的指令后缀无效”
- python - 使用 python 登录 Facebook
- r - 在任何情况下都强制 geom_bar 不干扰 x 排序?
- javascript - vscode 中这种特定类型的 javascript 快捷方式是什么?(见图)和/或更重要的是:在哪里查看完整列表?
- firebase - Flutter Web Firebase Hosting XMLHttpRequest 报错(使用本地chrome浏览器(调试),或使用火狐没有错误)
- ruby-on-rails - 直接在 Selenium 上运行测试
- java - 将项目转换为 maven 时 POM.xml 中的插件标记出错
- excel - 如何在 Angular 中为 officejs 创建自定义函数