![]() |
submit element from a list into a post request - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Web Scraping & Web Development (https://python-forum.io/forum-13.html) +--- Thread: submit element from a list into a post request (/thread-9162.html) |
submit element from a list into a post request - Godzilla - Mar-24-2018 Hello everybody, I'm a Python beginner and I have no idea on how to solve this problem I create a variable called list_id with several customer codes inside; then I should use every element of this list separately in a post request (this post request performs a search in a form), scrape the result of the search, make some cleaning and export to a .csv file. I succeeded in doing it once, but I can't figure out how to create a loop. This is the code I created so far: list_id = [ ] #create an empty list where I append all the customer codes I need for td in soup.find_all('td', {'data-review-id':True}): list_id.append(td['data-review-id'].replace('"', ''). replace(r'\/', '/').replace('\\', '').encode("latin-1")) # I extract the customer codes from a web page and append them to my list_id #print list_id # I set up the data for my post request: data2 = { 'reviews_review_search_presenter[ownClientOnlyYN]': 'false', 'reviews_review_search_presenter[userID]': '5228', 'utf8': '\u2713', 'authenticity_token': form3["authenticity_token"], #it takes the authenticity token from elsewhere 'reviews_review_search_presenter[timeOffset]': '0', 'reviews_review_search_presenter[reserveYN]': 'F', 'reviews_review_search_presenter[aktiv]': 'alle' , 'reviews_review_search_presenter[meinungstyp]': 'R' , 'reviews_review_search_presenter[typus]': '' , 'reviews_review_search_presenter[minNote]': '1' , 'reviews_review_search_presenter[maxNote]': '5' , 'reviews_review_search_presenter[fromDate]': '' , 'reviews_review_search_presenter[fromTime]': '' , 'reviews_review_search_presenter[toDate]': '' , 'reviews_review_search_presenter[toTime]': '' , 'reviews_review_search_presenter[fromUpdateDate]': '' , 'reviews_review_search_presenter[fromUpdateTime]': '' , 'reviews_review_search_presenter[toUpdateDate]': '' , 'reviews_review_search_presenter[toUpdateTime]': '' , 'reviews_review_search_presenter[artikelNummer]': '' , 'reviews_review_search_presenter[masterStyleID]': '' , 'reviews_review_search_presenter[digiStyleID]': '' , 'reviews_review_search_presenter[id]': list_id[0], #I take only the first customer code in my list_id 'reviews_review_search_presenter[text]': '' , # 'reviews_review_search_presenter[ownClientOnlyYN]': 'false' , 'reviews_review_search_presenter[accountNumber]': '' , 'reviews_review_search_presenter[name]': '' , 'reviews_review_search_presenter[firstName]': '' , 'reviews_review_search_presenter[email]': '' } response3 = s.post('http://mywebsite', data = data2) #print(response3.status_code) page3 = response3.text #print page soup2 = BeautifulSoup(page3, 'html.parser') for table in soup2.find_all(["table", {"class": "customer-info-table"}], limit=1): string = table.get_text().replace("\\n", "").replace("\/th", "").replace("\/span", "").replace("\/i", "").replace("\/p", "").replace("\/a", "").replace("\/tr", "").replace("\/div", "").replace("\/td", "").replace("<\/tbody", "").replace("\/table", "").replace("\/textarea", "").replace("\/b","").replace("\/select", "").replace("<\/option", "").replace("<\/label", "").replace("ead", "").replace("<>", "").encode("utf-8") ext = "Letzte" fileNameOnly = string[:string.find(ext) + len(ext)] print fileNameOnly reviews = [] reviews.append(fileNameOnly) print reviews file = open("out.csv", "wb") file.write(fileNameOnly)For the moment it works using only the first element from my list_id, but I would like to set up a loop that takes each element from my list_id, make a different post request, append it to the variable "reviews", so that I can download the final .csv file with all the reviews I need together. Is it possible (and, if yes, how?). Any idea or suggestion would be really appreciated. Thank you in advance for your help! |