?
Voici un extrait de la page Web et mon code python. J'essaie d'imprimer la valeur de 2,00 $.
Mon code me donne la sortie des éléments HTML requis mais il n'a pas les valeurs 2,00 $ ou 07/06. Pourquoi?
from bs4 import BeautifulSoup import re import urllib2 import time import requests url = 'https://www.localhost/test' headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'} response = requests.get(url, headers=headers) print response soup = BeautifulSoup(response.text, 'html.parser') soup.findAll('div', class_='io_col1_left')
<div class="io_col1_left"> <p data-quoteapi="price" class="quoteapi-number quoteapi-price">$2.00</p> <p class="io_data" data-quoteapi="dateTime">Closed - 07/06</p> </div>
3 Réponses :
strip ()
supprime les espaces au début et à la fin de la chaîne.
Remplacez votre code:
$2.00 Closed - 07/06
Pour :
div = soup.find('div', {'class':'io_col1_left'}) price = div.find("p",{'class':'quoteapi-price'}) dateTime = div.find("p",{'class':'io_data'}) print(price.text.strip()) print(dateTime.text.strip())
O / P:
soup.findAll('div', class_='io_col1_left')
La page charge le contenu de manière dynamique. Vous pouvez trouver la source de l'API dans l'onglet réseau et l'utiliser
import requests headers = {'User-Agent' : 'Mozilla/5.0', 'Accept' : 'application/json', 'Referer' : 'https://www.marketindex.com.au/asx/eof'} r = requests.get('https://quoteapi.com/api/v5/symbols/eof.asx?appID=af5f4d73c1a54a33&averages=1&liveness=delayed', headers = headers).json() price = r['quote']['price'] time = r['quote']['time'] print(price, time)
Réponse mise à jour pour vous.
cela a aidé, merci beaucoup :) J'essayais de coller ma question de la bonne manière, c'est pourquoi supprimait les anciens commentaires. Mais merci d'avoir regardé, apprécions vraiment votre temps
Si vous ne voulez supprimer que 2,00 $
, je vous recommande de remplacer:
table_divs = soup.findAll('div', class_='io_col1_left') for x in table_divs: print(x.findNext("p").getText())
par:
soup.find('div', class_='io_col1_left').findNext("p").getText()
si vous essayez de supprimer une table entière contenant plusieurs div
, je vous recommande de remplacer la ligne par celle-ci:
soup.findAll('div', class_='io_col1_left')
J'espère cela aide