Найти - Пользователи
Полная версия: Нужна помощь по парсеру Avito
Начало » Python для новичков » Нужна помощь по парсеру Avito
1
Nick_15033
Ребят, возникла ошибка по парсеру. пишет 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()
Soteric
Скопируй ошибку целиком. Обычно он там пишет на какой строке проблема.
Nick_15033
Soteric
Скопируй ошибку целиком. Обычно он там пишет на какой строке проблема.
Вот именно , просто пишет invalid syntax и всё.
Soteric
Попробуй воспользоваться советом отсюда, как-то провалидировать синтаксис: http://stackoverflow.com/questions/4284313/how-can-i-check-the-syntax-of-python-script-without-executing-it
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
Nick_15033
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


спасибо))
Leonsos
Nick_15033
Ребят, возникла ошибка по парсеру. пишет invali syntax. Помогите пожалуйста с кодом.
Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB