Как получить значение из элемента <p>? - PullRequest
1 голос
/ 08 июня 2019

Вот фрагмент веб-страницы и мой код Python.Я пытаюсь получить значение $ 2.00 напечатано.

Мой код дает мне необходимый вывод HTML-элементов, но он не имеет значений $ 2,00 или 07/06.Почему?

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

Ответы [ 3 ]

0 голосов
/ 08 июня 2019

Страница динамически загружает контент. Вы можете найти источник API на вкладке сети и использовать это

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)
0 голосов
/ 08 июня 2019

Если вы хотите отказаться только от $2.00, я бы порекомендовал заменить:

soup.findAll('div', class_='io_col1_left')

с:

soup.find('div', class_='io_col1_left').findNext("p").getText()

если вы пытаетесь удалить всю таблицу, в которой есть несколько div, я бы порекомендовал заменить строку на эту:

table_divs = soup.findAll('div', class_='io_col1_left')
for x in table_divs:
    print(x.findNext("p").getText())

Надеюсь, это поможет

0 голосов
/ 08 июня 2019

strip() - удаление пробелов в начале и конце строки.

Замените ваш код:

soup.findAll('div', class_='io_col1_left')

Кому:

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:

$2.00
Closed - 07/06
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...