Generator - Provide parameters to url - requests
Peter Otten
__peter__ at web.de
Wed Jul 5 03:28:48 EDT 2017
Sayth Renshaw wrote:
> Hi
>
> I am struggling to figure out how I can create a generator to provide
> values to my url. My url needs to insert the year month and day in the url
> not as params to the url.
>
>
> import json
> import requests
> import datetime
>
> # using this I can create a list of dates for the first 210 days of this
> # year.
>
> base = datetime.datetime(2017,1,1)
>
> def datesRange(max, min):
> date_list = (base - datetime.timedelta(days=x) for x in
> range(max,min)) DAY = date_list.day
> MONTH = date_list.month
> YEAR = date_list.year
> yield DAY, MONTH, YEAR
A single yield usually doesn't make sense -- you need one loop to generate
the data
ONE_DAY = datetime.timedelta(days=1)
def dates(first, numdays):
# generate datetime objects for extra clarity
# note there are no implicit arguments like `base` in your code
for _ in range(numdays):
yield first
first += ONE_DAY
... and another one to consume it
def create_url(date):
return "https:/example.com/{0.year}/{0.month}/{0.day}/".format(
date
)
def create_filename(date):
# use fixed widths for month and day to avoid ambiguous
# filenames, e. g. is "2017111.json" jan-11 or nov-1?
return "{0.year}{0.month:02}{0.day:02}.json".format(date)
FIRST = datetime.datetime(2017, 1, 1)
for date in dates(FIRST, numdays=210):
url = create_url(date)
r = requests.get(url)
filename = create_filename(date)
with open(filename, "w") as f:
...
> dateValues = datesRange(-210,0)
>
> def create_url(day, month, year):
>
https://api.tatts.com/sales/vmax/web/data/racing/{0}/{1}/{2}/sr/full".format(YEAR,MONTH,DAY)
> return url
>
> Then I want to insert them in this url one at a time from the generator
>
> try:
> r = requests.get(INSERT_URL_HERE)
> if r.status_code == requests.codes.ok then:
> # open a file for writing using url paramters
> with open(SR + DAY + MONTH + YEAR + '.json', 'w') as f:
> # Do stuff from here not relevant to question.
>
> I have just gotten lost.
>
> Is there an easier way to go about this?
>
> Cheers
>
> Sayth
More information about the Python-list
mailing list