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

AltStyle によって変換されたページ (->オリジナル) /