Мне надо , чтобы парсер работал.
1) Чтобы при нажатии на кнопку Парсить вызывалась функция pars и парселся сайт. ( А сейчас он начинает парситься с начала)
2) Чтобы при нажатии на кнопку Save код сохранялся в csv файле.
ПОМОГИТЕ , ПОЖАЛУЙСТА
Вот код:
## -*- coding: utf-8 -*- # одключение библиотек from tkinter import * import requests from bs4 import BeautifulSoup import csv #Графическая оболочка root = Tk() root.title('Парсер для Avito') root.geometry ('1500x830') width = root.winfo_screenwidth() height = root.winfo_screenheight() lab1 = Label(root,font='10', text = "Ввидеты ссылку на товары:") tx1 =Entry(root,width= 45,font='10') cb1 = Checkbutton(root, text= "Заголовок товара",font='8',onvalue = '1', offvalue = '0') cb2 = Checkbutton(root, text= "Цена товара",font='8',onvalue = '1', offvalue = '0') cb3 = Checkbutton(root, text= "Метро",font='8',onvalue = '1', offvalue = '0') cb4 = Checkbutton(root, text= "Ссылка на продукт",font='8',onvalue = '1', offvalue = '0') cb5 = Checkbutton(root, text= "Дата размещения на сайте",font='8',onvalue = '1', offvalue = '0') cb6 = Checkbutton(root, text= "Описание товара ",font='8',onvalue = '1', offvalue = '0') cb9 = Checkbutton(root, text= "Имя продавца",font='8',onvalue = '1', offvalue = '0') lab2 = Label(root, width= 30,height = 3,font='10', text = "Выберите метод сохранения файла:") cb10 = Checkbutton(root, text= "Сохранить",font='8') cb12 = Checkbutton(root, text= "Не сохранять",font='8') tx2 = Text(root,width = 100 , height = 50) scr = Scrollbar(root,command=tx2.yview) tx2.configure(yscrollcommand=scr.set,) scr2 = Scrollbar(root,command=tx2.yview,orient= 'horizontal') tx2.configure(xscrollcommand=scr2.set) but = Button(root ,text = 'SAVE', font = 100) but2= Button(root, text='Парсеть' , font = 200) #вывод на экран lab1.place(x = 1, y = 1) tx1.place ( x = 220 ,y = 1) cb1.place ( x = 1 , y = 30) cb2.place( x = 1,y =60) cb3.place( x = 1,y =90) cb4.place( x = 1,y =120) cb5.place( x = 200,y =30) cb6.place( x = 200,y =60) cb9.place(x = 1, y = 150) lab2.place( x = 1, y = 220) cb10.place(x = 1, y = 265) cb12.place(x = 180 , y = 265) tx2.place (x = 680, y = 1) scr.place (x = 662,y = 1) scr2.place( x = 680, y = 807) but2.place (x= 1 ,y = 180) but.place ( x = 1, y = 300) #основной парсер def get_html(url):# получение url кода r = requests.get(url) return r.text def get_total_pages(html):#считывание кол-ва страниц soup = BeautifulSoup(html, 'lxml') pages = soup.find('div',class_='pagination-pages').find_all('a',class_='pagination-page')[-1].get('href') total_pages = pages.split('=')[1].split('&')[0] return int(total_pages) ads = soup.find('div',class_='catalog-list').find_all('div',class_='item_table') for ad in ads: if cb1 == '1': title = ad.find('div',class_='description').find('h3').text.strip()#Заголовок else: pass if cb4 == '1': url = 'https://www.avito.ru' + ad.find('div',class_='discription').find('h3').find('a').get('href')#Ссылка else: pass if cb2 == '1': price = ad.find('div',class_='about').text.strip()#цена else: pass if cb3 =='1': metro = ad.find('div',class_='data').find_all('p')[-1].text.strip()#метро else: pass if cb5 == '1': data_tovara = ad.find('div', class_='data').find('div',class_='clearfix').find('div',class_='data c-2').text.strip()#дата размещения товара else: pass if cb6 == '1': opisanie = ad.find('div',class_='item-view-block').find('p').text.strip()#описание товара else: pass if cb9 =='1': saller = ad.find('div',class_='seller-info-name').find('a').text.strip()#продавец else: pass global data data = {'title':title, 'price':price, 'metro':metro, 'url':url, 'data_tovara':data_tovara, 'opisanie':opisanie, 'saller':saller} def write_csv(data): with open('avito.csv','w') as f: writer = csv.writer(f) writer.writerow(( data['title'],data['price'],data['metro'],data['data_tovara'],data['opisanie'],data['saller'],data['url'] )) def print_(event): soup = BeautifulSoup(html,'lxml') write_csv(data) def get_page_data(html): soup = BeautifulSoup(html,'lxml') but.bind('<Button-1>',pars) but2.bind('<Button-1>',print_) def main(): #https://www.avito.ru/novosibirsk?p=1&q=iphone+5s url = 'https://www.avito.ru/novosibirsk?p=1&q=iphone+5s' base_url = 'https://www.avito.ru/novosibirsk?' lab = Label(root, text="", font="Arial 12",height=3) page_part = 'p=' query_part = '&q=iphone+5s' total_pages = get_total_pages(get_html(url)) for i in range(1, total_pages): url_gen = base_url + page_part + str(i) + query_part html = get_html(url_gen) if __name__ == '__main__': main() root.mainloop()