Forum >> Principianti >> Web scraping con BeautifulSoap

Pagina: 1

Ciao a tutti, premetto che sono nuovo con Python!!
Mi trovo davanti ad un problema perchè dovrei trovare tramite BeautifulSoap uno span contenuto in un button con questo codice




<button class="sqdOP yWX7d     _8A5w5    " type="button">altri <span>17</span></button>





Ho fatto 2 tentativi: il primo in questo modo:




for item in soup.find_all('button', {'class': 'sqdOP yWX7d     _8A5w5    '}):





ma non ottenevo veramente nulla come risultato...




Il secondo tentativo è stato questo:




for item in soup.select('button.sqdOP span')0:





e ricevo questo errore list
index out of range





qualcuno sa trovare una soluzione/modo per risolvere il 'dilemma'?

grazie!



anche se la tua pagina html è scritta con i piedi, devi lo stesso comportarti bene con bs4.


prova soup.find_all('button', {'class': 'sqdOP yWX7d _8A5w5'}) senza tutti gli spazi assurdi, e qualcosa secondo me trovi. Mal che vada specifica una classe soltanto.

anche se la tua pagina html è scritta con i piedi, devi lo stesso comportarti bene con bs4.


prova soup.find_all('button', {'class': 'sqdOP yWX7d _8A5w5'}) senza tutti gli spazi assurdi, e qualcosa secondo me trovi. Mal che vada specifica una classe soltanto.


Ciao, ho provato in diversi modi specificando la classe con gli spazi, senza, e mantenendo solo la prima parte ma non ricevo nulla in output... questo è il codice. grazie.



import bs4 as bs

import urllib.request

import time

import telepot

from telepot.loop import MessageLoop


whitelist = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 -')




def handle(msg):

content_type, chat_type, chat_id = telepot.glance(msg)

print(content_type, chat_type, chat_id)



try:

sauce = urllib.request.urlopen(msg['text']).read()

soup = bs.BeautifulSoup(sauce, 'html.parser')


for item in soup.find_all('button', {'class':'sqdOP'}):

#answer = ''.join(filter(whitelist.__contains__, item.text))

bot.sendMessage(chat_id, item)

print(item)


except urllib.error.HTTPError as err:

if err.code == 404:

bot.sendMessage(chat_id, "Link del post non corretto, incolla un link di questo tipo: https://www.instagram.com/p/xxxxx")





--- Ultima modifica di leoleo in data 2020-06-15 22:26:17 ---
Guarda, tutto quello che posso dirti è:


>>> from bs4 import BeautifulSoup
>>> doc = '''<html><body>
... <button class="sqdOP yWX7d     _8A5w5    " type="button">altri <span>17</span></button>
... </body></hmtl>'''
>>> soup = BeautifulSoup(doc, 'html.parser')
>>> soup.find_all('button', {'class': 'sqdOP yWX7d     _8A5w5'}) # il modo sbagliato
[]
>>> soup.find_all('button', {'class': 'sqdOP yWX7d _8A5w5'})  # il modo giusto
[<button class="sqdOP yWX7d _8A5w5" type="button">altri <span>17</span></button>]
Se provi questo in una shell, vedi che funziona. Quindi non so che cos'altro fa il codice e dove stia il problema, ma... questo è.


questo è ciò che restituisce ;(

https://ibb.co/SvTpPrS


--- Ultima modifica di leoleo in data 2020-06-16 21:54:52 ---


Pagina: 1



Esegui il login per scrivere una risposta.