[text] x

Viewer

  1. import requests
  2. from bs4 import BeautifulSoup
  3.  
  4. s = requests.Session()
  5. username = "Grace Redding"
  6. password = "Beckett1234"
  7.  
  8. def login_and_get_week_ending_dates():
  9.     s.auth = (username, password)
  10.     login_url = "http://www.waitroseconnect.co.uk/names.nsf?Login"
  11.     payload = {'username': username, 'password': password}
  12.     s.post(login_url, data=payload)
  13.     link = f"http://www.waitroseconnect.co.uk/waitroseconnect/reference/WaitroseConnectSalesV2.nsf/WeeklyDataDocsViewForm?OpenForm=&DBPath=domcfg.nsf&Server_Name=www.waitroseconnect.co.uk&Username={username}&Password={password}"
  14.     response = s.get(link)
  15.     soup = BeautifulSoup(response.content, 'html.parser')
  16.     week_ending_dates = []
  17.     for date_elem in soup.find_all("a", href=True):
  18.         date_text = date_elem.get_text().strip()
  19.         if date_text and date_text != "Page Help":
  20.             week_ending_dates.append(date_text)
  21.     return week_ending_dates
  22.  
  23. def get_corresponding_week_number(date_to_find, week_ending_dates):
  24.     for i, date in enumerate(week_ending_dates[::-1], start=9):
  25.         if date == date_to_find:
  26.             week_number = str(i).zfill(2)
  27.             return week_number
  28.     return -1
  29.  
  30. def construct_url_for_week_ending_date(selected_date,corresponding_week_number):
  31.     base_url = f"http://www.waitroseconnect.co.uk/waitroseconnect/reference/WaitroseConnectSalesV2.nsf/LookupWeeklyLineBranchSalesAgent?OpenAgent&{corresponding_week_number}&s=135186&s=U&s=2024&s={selected_date}&s=1&s=2&s=0&s=135186"
  32.     return base_url
  33.  
  34. def get_response_from_url(url):
  35.     response = s.get(url)
  36.     return response
  37.  
  38. def download_csv_sales_data(weekendyear,corresponding_week_number):
  39.     downloadurl = f"http://www.waitroseconnect.co.uk/waitroseconnect/reference/WaitroseConnectSalesV2.nsf/SalesData.csv?OpenAgent&WebLookupWeeklyLineBranchSalesData135186{weekendyear}{corresponding_week_number}&s=LB"
  40.     response = s.get(downloadurl)
  41.     return response.text
  42.  
  43. def main():
  44.     week_ending_dates = login_and_get_week_ending_dates()
  45.     print("Select a Week Ending Date:")
  46.     for i, date in enumerate(week_ending_dates[::-1], start=1):
  47.         print(f"{i}. {date}")
  48.     selected_index = int(input("Please enter the number corresponding to your desired week ending date: "))
  49.     adjusted_index = len(week_ending_dates) - selected_index
  50.     selected_date = week_ending_dates[adjusted_index]
  51.     print(f"You selected: {selected_date}")
  52.     corresponding_week_number = get_corresponding_week_number(selected_date, week_ending_dates)
  53.     print(f"Corresponding number for {selected_date}: {corresponding_week_number}")
  54.     url = construct_url_for_week_ending_date(selected_date,corresponding_week_number)
  55.     response = get_response_from_url(url)
  56.     soup = BeautifulSoup(response.content, 'html.parser')
  57.     plain_text = soup.get_text()
  58.     weekendyear = selected_date.split("/")[2]
  59.     csvfile = download_csv_sales_data(weekendyear,corresponding_week_number)
  60.     print(csvfile)
  61.  
  62. if __name__ == "__main__":
  63.     main()

Editor

You can edit this paste and save as new:


File Description
  • x
  • Paste Code
  • 07 May-2024
  • 2.98 Kb
You can Share it: