2
votes

Comment obtenir la valeur de l'élément

?

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>


0 commentaires

3 Réponses :


0
votes

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')


0 commentaires

0
votes

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)


2 commentaires

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



0
votes

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


0 commentaires