Парсинг
Beautiful Soup
Table Of Content
Beautiful Soup, названная по аналогии с так называемым «tag soup», что означает «синтаксически или структурно некорректный HTML, написанный для веб-страницы», согласно определению на Википедии.
jsoup - это Java-версия Beautiful Soup.
В этой статье мы рассмотрим пример использования Beautiful Soup.
Парсинг отзывов о продукте на Amazon:
import requests
from bs4 import BeautifulSoup
import pandas as pd
reviewlist = []
def get_soup(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return soup
def get_reviews(soup):
reviews = soup.find_all('div', {'data-hook': 'review'})
try:
for item in reviews:
review = {
'product': soup.title.text.replace('Amazon.in:Customer reviews:', '').strip(),
'title': item.find('a', {'data-hook': 'review-title'}).text.strip(),
'rating': float(item.find('i', {'data-hook': 'review-star-rating'}).text.replace('out of 5 stars', '').strip()),
'body': item.find('span', {'data-hook': 'review-body'}).text.strip(),
}
reviewlist.append(review)
except:
pass
for x in range(1, 10):
soup = get_soup(f'https://www.amazon.in/Solimo-Plastic-Container-White-SOPLA186/product-reviews/B07P94VK1Q/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews={x}')
print(f'Getting page: {x}')
get_reviews(soup)
print(len(reviewlist))
if not soup.find('li', {'class': 'a-disabled a-last'}):
pass
else:
break
df = pd.DataFrame(reviewlist)
df.to_csv('reviews.csv')
print('End')
Это простой и легкий пример, чтобы начать использовать Beautiful Soup, здесь вы можете изменить ссылку на любой продукт и попробовать. Конечный результат будет сохранен в файле csv с указанными именами столбцов с помощью pandas.
Продолжайте исследовать!