Ищем отзывы с "drom.ru" об авто

И так, люблю читать информацию о своем авто и тут наткнулся на мысль что было бы круто сделать для себя книгу со всеми собранными отзывами, большее количество отзывов находятся на drom и было принято решение брать данные оттуда. Библиотека будет использоваться bs4 для python, а также docx так как я хочу сделать себе чтиво в виде книги ))


https://github.com/tagunzet/drom_obzor


from bs4 import BeautifulSoup

import urllib.request

import docx


Импортирую библиотеки, а далее указываю ссылку от куда будем брать данные:

а далее

resp = urllib.request.urlopen("http://www.drom.ru/reviews/toyota/vitz/")

указываем ссылку (у меня это раздел Тойота марка VITZ )


soup = BeautifulSoup(resp)

(Указываем экземпляр объекта)

Cоздаю два массива один будет содержать список ссылок, а второй информацию, которую мы достали по этой ссылке

linkmass = []

tmpmass = []

Получение ссылок

Тут мы заходим на сайт и парсим все ссылки, которые есть на нем.

for link in soup.find_all('a', href=True):

if 'page' in link['href']:

#print(link['href'])

getlink(link['href'])

И передаём список ссылок в функцию getlink где мы уже будем обрабатывать эти ссылки.

def getlink(page): Функция обработки ссылок, как известно ссылок на странице будет много и половину этих ссылок мусор

resp = urllib.request.urlopen(page)

soup = BeautifulSoup(resp)

for link in soup.find_all('a', href=True): смотрим все тэги a href

if len(link['href']) == 46: если длинна ссылки строки == 46, а именно ссылки с номерами авто равны 45 символам мы добавляем в словарь

#print(link['href'])

linkmass.append(link['href']) добавляем в словарь ссылок

а теперь получаем информацию по ссылке :

doc = docx.Document() объявляем экземпляр объекта

doc.add_paragraph('Отзывы о Toyota Vitz') пишем заголовок для нашей книги

def getinfo(): функция получения информации

for linkofinfo in linkmass: берем ссылки из словаря по одной

resp = urllib.request.urlopen(linkofinfo) и начинаем читать страницу

soup = BeautifulSoup(resp)

soup.prettify() -- функция делает внешний вид лучше ( нашел о оф документации )

for name in soup.find_all("div", {"class": "b-fix-wordwrap"}): теперь ищем класс в котором содержится отзыв об авто.

tmps = (str(name.get_text().strip())) добавляем во временную переменную

print('append') - что-нибудь чирканём в консоль что бы видеть статус добавления

par1 = doc.add_paragraph('Итак:  ') - добавляем параграф

par1.add_run(tmps) - добавляем текст в параграф

Конец кода

getinfo() - - не забываем вызвать функцию getinfo ( я это сделал в самом низу )

doc.save('helloworld.docx') -- обязательно сохраняем наш результат в docx файл !

У меня вышло 342 страницы интересного чтива !!))

Может кому-то пригодится!|


link to git : https://github.com/tagunzet/drom_obzor

Ищем отзывы с "drom.ru" об авто Python, Dromru, Программирование, Программист, Книги, Длиннопост
Ищем отзывы с "drom.ru" об авто Python, Dromru, Программирование, Программист, Книги, Длиннопост

Программирование на python

680 постов11.9K подписчика

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу