[text] z

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.             return i
  27.     return -1
  28.  
  29. def construct_url_for_week_ending_date(selected_date,corresponding_week_number):
  30.     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"
  31.     return base_url
  32.  
  33. def get_response_from_url(url):
  34.     response = s.get(url)
  35.     return response
  36.  
  37. def download_csv_sales_data(weekendyear,corresponding_week_number):
  38.     downloadurl = f"http://www.waitroseconnect.co.uk/waitroseconnect/reference/WaitroseConnectSalesV2.nsf/SalesData.csv?OpenAgent&WebLookupWeeklyLineBranchSalesData135186{weekendyear}{corresponding_week_number}&s=LB"
  39.     response = s.get(downloadurl)
  40.     return response
  41.  
  42. def main():
  43.     week_ending_dates = login_and_get_week_ending_dates()
  44.     print("Select a Week Ending Date:")
  45.     for i, date in enumerate(week_ending_dates[::-1], start=1):
  46.         print(f"{i}. {date}")
  47.     selected_index = int(input("Please enter the number corresponding to your desired week ending date: "))
  48.     selected_date = week_ending_dates[selected_index]
  49.     print(f"You selected: {selected_date}")
  50.     corresponding_week_number = get_corresponding_week_number(selected_date, week_ending_dates)
  51.     print(f"Corresponding number for {selected_date}: {corresponding_week_number}")
  52.     url = construct_url_for_week_ending_date(selected_date,corresponding_week_number)
  53.     response = get_response_from_url(url)
  54.     soup = BeautifulSoup(response.content, 'html.parser')
  55.     plain_text = soup.get_text()
  56.     weekendyear = selected_date.split("/")[2]
  57.     csvfile = download_csv_sales_data(weekendyear,corresponding_week_number)
  58.     print(csvfile)
  59.  
  60. if __name__ == "__main__":
  61.     main()

Editor

You can edit this paste and save as new:


File Description
  • z
  • Paste Code
  • 07 May-2024
  • 2.87 Kb
You can Share it: