Seite 1 von 1

Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:35
von DeF3c
Hallo ich habe folgendes Problem:
Ich versuche diese Nummer:

Code: Alles auswählen

<span class="g47SY ">30,475,543</span>
in dem Tag zu bekommen. Ich habe bereits:

Code: Alles auswählen

soup = BeautifulSoup(bot.driver.page_source, "lxml")
n = soup.find('span', {'class': 'g47SY'})
)
Allerdings returned mir das nur

Code: Alles auswählen

<span class=""g47SY"">30,475,872</span>
Ich habe danach schon in anderen Foren gesucht, normalerweise sollte ich

Code: Alles auswählen

n = soup.find('span', {'class': 'g47SY'}).text
benutzen könnten, was aber nicht möglich ist. Irgendwelche Hilfe?

Sollte es helfen, die Internetseite, bei der ich es versuche:
https://www.instagram.com/explore/tags/apple/

Cheers

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:42
von __blackjack__
@DeF3c: Also bei mir funktioniert das:

Code: Alles auswählen

In [13]: soup.find("span", "g47SY")                                             
Out[13]: <span class="g47SY ">30,477,004</span>

In [14]: soup.find("span", "g47SY").text                                        
Out[14]: '30,477,004'

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:46
von DeF3c
__blackjack__ hat geschrieben: Montag 16. März 2020, 12:42 @DeF3c: Also bei mir funktioniert das:

Code: Alles auswählen

In [13]: soup.find("span", "g47SY")                                             
Out[13]: <span class="g47SY ">30,477,004</span>

In [14]: soup.find("span", "g47SY").text                                        
Out[14]: '30,477,004'
Bei mir seltsamerweise nicht ich kann das .text nicht einfügen, da es sont, in meinem Beispiel, in PyCharm Gelb hinterlegt ist mit dem Error: Unresolved attribute reference 'text' for class 'PageElement'

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:51
von Jankie
Also .text funktioniert bei mir auch. Versuch mal .get_text()

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:53
von DeF3c
Jankie hat geschrieben: Montag 16. März 2020, 12:51 Also .text funktioniert bei mir auch. Versuch mal .get_text()
Wenn du

Code: Alles auswählen

nposts = soup.find('span', {'class': 'g47SY'}).get_text()
meinst, funktioniert das auch nicht

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:54
von __blackjack__
@DeF3c: Heisst das Du glaubst da der IDE und hast das gar nicht wirklich ausprobiert? Statische Analyse von Quelltext von dynamischen Programmiersprachen ist nicht 100%ig, da kann sich die IDE durchaus auch mal irren. Warum auch immer die IDE denken mag das `BeautifulSoup.find()` etwas vom Typ `PageElement` liefert: das stimmt nicht:

Code: Alles auswählen

In [15]: type(soup.find("span", "g47SY"))                                       
Out[15]: bs4.element.Tag

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:56
von DeF3c
__blackjack__ hat geschrieben: Montag 16. März 2020, 12:54 @DeF3c: Heisst das Du glaubst da der IDE und hast das gar nicht wirklich ausprobiert? Statische Analyse von Quelltext von dynamischen Programmiersprachen ist nicht 100%ig, da kann sich die IDE durchaus auch mal irren. Warum auch immer die IDE denken mag das `BeautifulSoup.find()` etwas vom Typ `PageElement` liefert: das stimmt nicht:

Code: Alles auswählen

In [15]: type(soup.find("span", "g47SY"))                                       
Out[15]: bs4.element.Tag
Das ist mir jetzt ein bisschen Peinlich, du hattest Recht. Ich habe mich zu sehr auf die IDE verlassen. Vielen Dank!

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:56
von sparrow
Wir sollten anfange vor PyCharm zu warnen ;)

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 12:58
von DeF3c
sparrow hat geschrieben: Montag 16. März 2020, 12:56 Wir sollten anfange vor PyCharm zu warnen ;)
Aber es sieht so schöön aus, und ich muss auch ehrlich sagen, dass mir der Package Installer sehr gefällt. Alternativen habe ich mir ehrlich gesagt, wenig angeschaut, dennoch hat mich diese sofort angesprochen.

Re: Wie bekomme ich diese Nummer mit beautifulsoup?

Verfasst: Montag 16. März 2020, 13:26
von __blackjack__
`PageElement` ist die gemeinsame Elternklasse von `Tag` und `NavigableString` und `find()` kann beides liefern. Vielleicht hat das die „type inference“ von PyCharm ja dazu gebracht anzunehmen das `find()` etwas vom Typ `PageElement` liefert, statt etwas vom Typ ``Union[Tag, NavigableString, None]``.