Ищем отзывы с "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
Программирование на python
680 постов11.9K подписчика
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу