Базовый Python BeautifulSoup Соскреб веб-обзоров Tripadvisor и очистки данных - PullRequest
0 голосов
/ 19 мая 2018

Я - новичок в программировании и в StackOverflow, и мне просто нужно выполнить некоторые базовые операции по сбору веб-страниц со страницы TripAdvisor и очистить от них некоторую полезную информацию.Отобразите это красиво и т. Д. Я пытаюсь выделить название кафе, количество оценок и сам рейтинг.Я думаю, что мне может понадобиться преобразовать его в текст и использовать регулярные выражения или что-то?Я действительно не знаю.Примером того, что я имею в виду, может быть:

Вывод:

Coffee Cafe, 4 из 5 пузырьков, 201 отзыв.

Что-то в этом роде.Я поместу свой код так далеко внизу, любая помощь, которую я мог бы получить, была бы удивительной, и я был бы бесконечно благодарен.Ура.

from bs4 import BeautifulSoup

def get_HTML(url):
    response = urllib.request.urlopen(url)
    html = response.read()
    return html


Tripadvisor_reviews_HTML=get_HTML(
'https://www.tripadvisor.com.au/Restaurants- 
 g255068-c8-Brisbane_Brisbane_Region_Queensland.html')


def get_review_count(HTML):
    soup = BeautifulSoup(Tripadvisor_reviews_HTML, "lxml")
    for element in soup(attrs={'class' : 'reviewCount'}):
        print(element)

get_review_count(Tripadvisor_reviews_HTML)

def get_review_score(HTML):
    soup = BeautifulSoup(Tripadvisor_reviews_HTML, "lxml")
    for four_point_five_score in soup(attrs={'alt' : '4.5 of 5 bubbles'}):
        print(four_point_five_score)


get_review_score(Tripadvisor_reviews_HTML)

def get_cafe_name(HTML):
    soup = BeautifulSoup(Tripadvisor_reviews_HTML, "lxml")
    for name in soup(attrs={'class' : "property_title"}):
        print(name)



get_cafe_name(Tripadvisor_reviews_HTML)

1 Ответ

0 голосов
/ 19 мая 2018

Вы забыли использовать .text в каждом операторе печати.Однако попробуйте следующий подход, чтобы получить все три поля с этого сайта.

from bs4 import BeautifulSoup
import urllib.request

URL = "https://www.tripadvisor.com.au/Restaurants-g255068-c8-Brisbane_Brisbane_Region_Queensland.html"

def get_info(link):
    response = urllib.request.urlopen(link)
    soup = BeautifulSoup(response.read(),"lxml")
    for items in soup.find_all(class_="shortSellDetails"):
        name = items.find(class_="property_title").get_text(strip=True)
        bubble = items.find(class_="ui_bubble_rating").get("alt")
        review = items.find(class_="reviewCount").get_text(strip=True)
        print(name,bubble,review)

if __name__ == '__main__':
    get_info(URL)

Результат, который вы можете получить как:

Double Shot New Farm 4.5 of 5 bubbles 218 reviews
Goodness Gracious Cafe 4.5 of 5 bubbles 150 reviews
New Farm Deli & Cafe 4.5 of 5 bubbles 273 reviews
Coffee Anthology 4.5 of 5 bubbles 116 reviews
...