Форум сайта python.su
0
Ребят, возникла ошибка по парсеру. пишет invali syntax. Помогите пожалуйста с кодом.
## -*- coding: utf-8 -*- # подключение библиотек import requests from bs4 import BeautifulSoup import csv 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) def write_csv(data): with open('avito.csv','a') as f: writer= csv.writer(f) writer.writerow( ( data['title'], data['price'], data['metro'], data['data_tovara'], data['opisanie'], data['saller'], data['url'] )) def get_page_data(html): soup = BeautifulSoup(html,'lxml') ads = soup.find('div',class_='catalog-list').find_all('div',class_'item_table') for ad in ads: try: title = ad.find('div',class_='discription').find('h3').text.strip() except: title ='' try: url = 'https://www.avito.ru' + ad.find('div',class_='discription').find('h3').find('a').get('href') except: url = '' try: price = ad.find('div',class_='about').text.strip() except: price = '' try: metro = ad.find('div',class_='data').find_all('p')[-1].text.strip() except: metro = '' try: data_tovara = ad.find('div', class_='data').find('div',class_='clearfix').find('div',class_='data c-2').text.strip() except: data_tovara = '' try: opisanie = ad.find('div',class_='item-view-block').find('p').text.strip() except: opisanie = '' try: saller = ad.find('div',class_='seller-info-name')find('a').text.strip() except: saller = '' data = {'title':title, 'price':price, 'metro':metro, 'url':url, 'data_tovara':data_tovara, 'opisanie',opisanie, 'saller':saller} write_csv(data) 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?' 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 #print(url_gen) html = get_html(url_gen) get_page_data(html) if __name__ == '__main__': main()
Офлайн
20
Скопируй ошибку целиком. Обычно он там пишет на какой строке проблема.
Офлайн
0
SotericВот именно , просто пишет invalid syntax и всё.
Скопируй ошибку целиком. Обычно он там пишет на какой строке проблема.
Офлайн
20
Попробуй воспользоваться советом отсюда, как-то провалидировать синтаксис: http://stackoverflow.com/questions/4284313/how-can-i-check-the-syntax-of-python-script-without-executing-it
Офлайн
73
ошибка в def get_page_data(html):
записано без = в последних скобках
ads = soup.find('div',class_='catalog-list').find_all('div',class_'item_table')
исправлено
ads = soup.find('div',class_='catalog-list').find_all('div',class_='item_table')
ошибка в def get_page_data(html): в последнем блоке try
пропущена точка в saller = ad.find('div',class_='seller-info-name')find('a').text.strip()
исправлено saller = ad.find('div',class_='seller-info-name').find('a').text.strip()
там же словарь data ключ значение ‘opisanie’,opisanie исправляем на ‘opisanie’через двоеточие opisanie
Отредактировано marvellik (Май 20, 2017 15:47:12)
Офлайн
0
marvellik
ошибка в def get_page_data(html):записано без = в последних скобкахads = soup.find('div',class_='catalog-list').find_all('div',class_'item_table')исправленоads = soup.find('div',class_='catalog-list').find_all('div',class_='item_table')ошибка в def get_page_data(html): в последнем блоке tryпропущена точка в saller = ad.find('div',class_='seller-info-name')find('a').text.strip()исправлено saller = ad.find('div',class_='seller-info-name').find('a').text.strip()там же словарь data ключ значение ‘opisanie’,opisanie исправляем на ‘opisanie’через двоеточие opisanie
Офлайн
0
Nick_15033Спасибо.
Ребят, возникла ошибка по парсеру. пишет invali syntax. Помогите пожалуйста с кодом.
Офлайн