Reputation: 61
I was scraping reviews of Kickstarter. I was able to get the name of the reviewer and the 1st p
tag that contains the review. But for some reviews there's additional p
tags that I want to scrape. How to do that.
Here is the code I've written.
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import requests
driver = webdriver.Chrome(
executable_path=r'C:\Users\silvi\projects\selenium_basics\chromedriver.exe')
url = 'https://www.sitejabber.com/reviews/kickstarter.com'
# driver.get(url)
soup = bs(requests.get(url).content, "html.parser")
for review in soup.select('div .url-reviews .review'):
name = review.a.get_text(strip=True, separator=" ")
customer_review = review.find('p').text
print(name)
print(customer_review)
print()
driver.quit()
Upvotes: 0
Views: 74
Reputation: 438
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import requests
driver = webdriver.Chrome(
executable_path=r'C:\Users\silvi\projects\selenium_basics\chromedriver.exe')
url = 'https://www.sitejabber.com/reviews/kickstarter.com'
# driver.get(url)
soup = bs(requests.get(url).content, "html.parser")
divs=soup.findAll('div',{"class": ["url-reviews","review"]})
for review in divs:
name = review.a.get_text(strip=True, separator=" ")
print(name)
customer_review = review.find_all('p')
print("========================")
for p in customer_review:
print(p.text)
print(" - - - -")
driver.quit()
use customer_review = review.find_all('p') and with a for print its elements text
Upvotes: 0
Reputation: 6722
You can use review.find_all('p')
, then use a list comprehension to get the text out of all of them, skipping the first as you already have that in customer_review
for review in soup.select('div .url-reviews .review'):
name = review.a.get_text(strip=True, separator=" ")
customer_review = review.find('p').text
other_ps = [p.text for p in review.find_all('p')[1:]]
print(name)
print(customer_review)
print(other_ps)
Upvotes: 1