Domanda Beautifulsoup // Instagram // Recupero Info

valo83

Utente Iron
26 Novembre 2021
30
8
1
14
Ciao a tutti,

questo è il codice:

Codice:
import requests
from bs4 import BeautifulSoup
URL = "https://www.instagram.com/p/CXQ9YA4K2F-/"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html5lib')
result01=soup.find_all("div", {"class": "o-MQd z8cbW "})
result01

Molto semplice.
Recuperato un URL di un post Instagram, vorrei recuperare le info presenti.
Una volta ok, iterarlo su un ciclo For di indirizzi.

Qui volevo tirare fuori la posizione.
In seguito vorrei esportare gli hashtag presenti e via di seguito.

Ho provato a seguire un po' di tutorial, ma probabilmente non ho capito bene come funziona il pacchetto bs4 nella ricerca in HTML.


Grazie mille

Valo
 
Ciao!

Innanzitutto dubito che Instagram ti faccia fetchare il source di quell'url soltanto con request. Lo script funziona? Che return code ti da la request? Generalmente in questi casi è meglio simulare una sessione di un browser attraverso Selenium, risulta un po' più complicato ma ne vale la pena.

result01=soup.find_all("div", {"class": "o-MQd z8cbW "})
Questa riga di codice può avere alcuni problemi, andiamo con calma:
Tu ricerchi nel tag una class specifica, devi sapere che la class rappresenta appunto una classe e non un singolo oggetto e questo ti potrebbe creare problemi magari scegliendo il tag sbagliato, inoltre il valore della class potrebbe cambiare e anche questo sarebbe un male. Dando uno sguardo al source dei post di Instagram non c'è un tag che abbia un attributo "id" (il quale a differenza della class è unico), quindi ti devi ingegnare...

La posizione è in un tag "a" (che contiene un link), notiamo come tutti i link dei luoghi (contenuti nell'attributo "href") inizino con "/explore/locations/..." quindi puoi usare una re (regular expression) per trovare il tag "a" che ti serve. Ti linko questo post su Stack Overflow che tratta esattamente il tuo problema devi solo adattarlo alla tua situazione, ecco il Post.

Riguardo le altre info che vuoi estrarre come vedi devi ingegnarti