Wie bekomme ich diese Nummer mit beautifulsoup?

Django, Flask, Bottle, WSGI, CGI…
Antworten
DeF3c
User
Beiträge: 8
Registriert: Sonntag 1. März 2020, 12:03

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
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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'
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
DeF3c
User
Beiträge: 8
Registriert: Sonntag 1. März 2020, 12:03

__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'
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Also .text funktioniert bei mir auch. Versuch mal .get_text()
DeF3c
User
Beiträge: 8
Registriert: Sonntag 1. März 2020, 12:03

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
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
DeF3c
User
Beiträge: 8
Registriert: Sonntag 1. März 2020, 12:03

__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!
Benutzeravatar
sparrow
User
Beiträge: 4532
Registriert: Freitag 17. April 2009, 10:28

Wir sollten anfange vor PyCharm zu warnen ;)
DeF3c
User
Beiträge: 8
Registriert: Sonntag 1. März 2020, 12:03

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.
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

`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]``.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Antworten