Python: Beautiful Soup’s “find_all” does not extract any content from HTML

Tags: , , ,



I am currently trying to webscrape googles playstore. More specifically I want to create a dataset, that contains ratings of the disney+ app.

Based a tutorial on webscraping (Building a dataset of Graphic Cards on “Newegg.com”) I had no troubles in extracting the necesary information from the website. I did so by finding the correct container within the html code of the site. Here is the code that works percectly fine:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = "https://www.newegg.com/p/pl?d=graphics+card&PageSize=96&page=1"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html,"html.parser")
page_soup.find_all("div",{"class":"item-container"})[1]

which gives me the desired output of html chunks to extract more specific information:

<div class="item-container"><a class="item-img" href="https://www.newegg.com/msi...

However if I try to replicate the code for disney+ on googles playstore, the function does not extract anything. Of course I also searched for the container within the html code that contains the review of a person. The Code:

my_url = "https://play.google.com/store/apps/details?id=com.disney.disneyplus&hl=de&showAllReviews=true"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html,"html.parser")
page_soup.find_all("div",{"class":"zc7KVe"})[1]

Which produces the error:

IndexError                                Traceback (most recent call last)
<ipython-input-54-930354cdd883> in <module>
      9 uClient.close()
     10 page_soup = soup(page_html,"html.parser")
---> 11 page_soup.find_all("div",{"class":"zc7KVe"})[1]
     12 

IndexError: list index out of range

I understand the error message, however I am puzzled on how to extract the review information the same way as in the example with graphic cards.

Any help is highly appreciated.

Best regards Neil

Answer

One simple option is HtmlSession

from requests_html import HTMLSession
from bs4 import BeautifulSoup as bs # importing BeautifulSoup


url = "https://play.google.com/store/apps/details?id=com.disney.disneyplus&hl=de&showAllReviews=true"
# init an HTML Session
session = HTMLSession()
# get the html content
response = session.get(url)
# execute Java-script
response.html.render(sleep=5)
# create bs object to parse HTML
soup = bs(response.html.html, "html.parser")
names = soup.find_all("div",{"class":"zc7KVe"})
for i in range(5):
    print(names[i].text)

Output:-

 Zapomni28. November 20201Nicht hilfreichSpamLink zu dieser Rezension Das Layout der App ist nicht sehr schön oder innovativ. Es gibt wenig Einstellungen. Am kritischsten ist aber dass es kein Miniplayer gibt. Wirklich schlecht. Prime hat das z.b.. Das Angebot von NatGeo ist ziemlich klein. Hätte mich auf mehr gute Dokus gefreut. Aber wirklich cool ist, dass man den k…Vollständige RezensionDas Layout der App ist nicht sehr schön oder innovativ. Es gibt wenig Einstellungen. Am kritischsten ist aber dass es kein Miniplayer gibt. Wirklich schlecht. Prime hat das z.b.. Das Angebot von NatGeo ist ziemlich klein. Hätte mich auf mehr gute Dokus gefreut. Aber wirklich cool ist, dass man den kompletten Speicherplatz der SD/Speicher Karte nutzen kann und es hier kein Limit gibt. Man sieht auch wieviel noch verfügbar ist. Insgesamt wie immer bei den dicken Konzernen viel Luft nach oben.
Zapomni28. November 20201Nicht hilfreichSpamLink zu dieser Rezension
Aleolina X27. November 20206Bearbeitungsverlauf ansehenNicht hilfreichSpamLink zu dieser Rezension Die App ist super aber irgendwie kann ich in der app seit kurzem die Lautstärke nicht mehr regulieren. Ich muss die App jedes mal vorher schließen dann die Lautstärke einstellen und dann wieder öffnen. Außerdem lassen sich bei mir die Untertitel auch nicht langfristig ausschalten. Bei jedem neuen Fi…Vollständige RezensionDie App ist super aber irgendwie kann ich in der app seit kurzem die Lautstärke nicht mehr regulieren. Ich muss die App jedes mal vorher schließen dann die Lautstärke einstellen und dann wieder öffnen. Außerdem lassen sich bei mir die Untertitel auch nicht langfristig ausschalten. Bei jedem neuen Film oder einer neuen Folge sind die Untertitel wieder da. Das macht das ganze irgendwie nervig. Hoffe das wird bald behoben.
Aleolina X27. November 20206Bearbeitungsverlauf ansehenNicht hilfreichSpamLink zu dieser Rezension
Stefan18. November 202021Nicht hilfreichSpamLink zu dieser Rezension Ein tolles Angebot zum vernünftigen Preis, große Auswahl, top Qualität. Einziger Kritikpunkt ist, dass die Downloads sich ständig von selbst löschen und man sie erneut runter laden muss wenn man die App verlassen hat und später wieder rein geht. Ich habe mir eine komplette Serie zu Hause über WLAN i…Vollständige RezensionEin tolles Angebot zum vernünftigen Preis, große Auswahl, top Qualität. Einziger Kritikpunkt ist, dass die Downloads sich ständig von selbst löschen und man sie erneut runter laden muss wenn man die App verlassen hat und später wieder rein geht. Ich habe mir eine komplette Serie zu Hause über WLAN in höchster Qualität runter geladen, die Folgen werden in Downloads angezeigt aber ich kann sie nicht abspielen sondern muss immer wieder neu runter laden. (SONY XPERIA 1)


Source: stackoverflow