info@worthwebscraping.com
(+91) 79841 03276

Scrape TripAdvisor Reviews using Python

Scrape TripAdvisor Reviews using Python

Download Python Script

Send download link to:

TripAdvisor is the most popular website to search for best hotels, restaurants, sightseeing places, adventure gaming and almost anything for a nice trip. Scrape TripAdvisor reviews provide very useful data. Whenever someone plans a trip to a new city, country it is almost a ritual to check for the best places and things to do on TripAdvisor. Millions of people visit the website every year looking to make their trips memorable. Also millions of people put their experiences, reviews of places on website. Because the website is so popular more and more hotels, restaurants and other travel businesses are trying to get listed on the website and maintain a good status as good reviews here can benefit them a lot.

TripAdvisor reviews play a very important role. Most of the people visit site just to check reviews of a particular hotel, restaurant, city, tourist spot etc or look for recommendation based on other peoples experience. So using scraped reviews a customer can do sentiment analysis or create a recommendation engine to find best places or a hotel, restaurant can learn from reviews and improve their services.

In this tutorial we will go to TripAdvisor https://www.tripadvisor.in/Hotels-g187147-Paris_Ile_de_France-Hotels.html and search for hotels in Paris and Scrape their reviews.

To scrape reviews we need to go to each individual hotel page so we need to grab the link of each page from href as shown below:

After grabbing all the link we need to change them dynamically to scrape reviews from multiple pages. Watch the video for detailed explanation of this.

See complete code below:

Import Libraries

Import Libraries

import requests
from bs4 import BeautifulSoup as soup 

Send Get Request:

html = requests.get('https://www.tripadvisor.in/Hotels-g187147-Paris_Ile_de_France-Hotels.html')
bsobj = soup(html.content,'lxml')

Grab all links:

links = []

for review in bsobj.findAll('a',{'class':'review_count'}):
  a = review['href']
  a = 'https://www.tripadvisor.in'+ a
  a = a[:(a.find('Reviews')+7)] + '-or{}' + a[(a.find('Reviews')+7):]
  print(a)
  links.append(a)

links

Output:

Scrape Reviews:

from random import randint

from time import sleep

reviews = []

for link in links:

  d = [5,10,15,20,25]

  headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}
  html2 = requests.get(link.format(i for i in range(5,1000,5)),headers=headers)
  sleep(randint(1,5))
  bsobj2 = soup(html2.content,'lxml')
  for r in bsobj2.findAll('q'):
    reviews.append(r.span.text.strip())
    print(r.span.text.strip())

reviews

Output:

Try this code to grab TripAdvisor reviews and use that data in your further business analysis or you can use our TripAdvisor scraping services. We can extract bulk data for you and provide in desired format.