Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2017, 19:42   #1
nick15033
Новичок
Джуниор
 
Регистрация: 18.05.2017
Сообщений: 1
Восклицание Помогите с парсером Avito

Ребят, возникла ошибка по парсеру. пишет 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()
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 18.05.2017 в 19:44.
nick15033 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с парсером igrok_by PHP 13 16.02.2016 16:42
Статистика просмотров как на Avito fs444 JavaScript, Ajax 5 19.03.2014 03:35
[C#] Пoмoщь с парсером JonMagon Помощь студентам 2 08.02.2012 15:44
Проблема с парсером ckopnio PHP 11 01.11.2010 17:05