Aidez-moi s'il vous plaît avec l'utilisation de magnifiquesSoup sur Web racler des valeurs finales de Investing.com à l'aide de Python 3. Quoi que je ne reçois jamais de valeur et que la classe de fichiers change de manière permanente de la page Web est une valeur en direct.
<html> <head> <title>403 You are banned from this site. Please contact via a different client configuration if you believe that this is a mistake. </title> </head> <body> <h1>Error 403 You are banned from this site. Please contact via a different client configuration if you believe that this is a mistake.</h1> <p>You are banned from this site. Please contact via a different client configuration if you believe that this is a mistake.</p> <h3>Guru Meditation:</h3> <p>XID: 850285196</p> <hr/> <p>Varnish cache server</p> </body> </html>
3 Réponses :
On dirait que le site Web détecte l'endroit où la demande provient, nous devons donc «le faire tromper» en pensant que nous sommes sur un navigateur.
from bs4 import BeautifulSoup from urllib.request import Request, urlopen r = Request("https://es.investing.com/indices/spain-35-futures", headers={"User-Agent": "Mozilla/5.0"}) c = urlopen(r).read() soup = BeautifulSoup(c, "html.parser") print(soup)
Le serveur Web détecte le script Python comme un bot et les bloque donc. En utilisant des en-têtes, vous pouvez l'empêcher et le code suivant le fait:
import requests from bs4 import BeautifulSoup url = "https://es.investing.com/indices/spain-35-futures" header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36'} page=requests.get(url,headers=header) soup=BeautifulSoup(page.content,'html.parser') #this soup returns <span class="arial_26 inlineblock pid-8828-last" dir="ltr" id="last_last">9.182,5</span> result = soup.find('span',attrs={'id':'last_last'}).get_text() #use the get_text() function to extract the text print(result)
Vous pouvez essayer d'utiliser le pilote Web Selenium. Comme autrement, vous ferez face à cette chose plus si le nombre de demandes est élevé. En outre, il existe parfois un problème avec des sites ayant JavaScript.