Невозможно найти элемент внутри тега span - PullRequest
1 голос
/ 21 апреля 2019

Я пытаюсь создать данные с этого сайта: https://www.dailyfx.com/sentiment Например, я хотел бы знать, сколько процентов клиентов длинны по EUR / USD, но я не могу получить текст втег span.

Я пытаюсь получить 61%

<span class="bullish-color jsdfx-sentiment-long" style="font-size: 15px;">61%</span>

'' '

import bs4, requests

dailyfxSite = 'https://www.dailyfx.com/sentiment'

res = requests.get(dailyfxSite)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')

span = soup.find("span", class_="bullish-color jsdfx-sentiment-long")
print(span)

' ''

Iполучите это как возврат:

<span class="bullish-color jsdfx-sentiment-long" style="font-size:15px;"> </span>

'' '

все, кроме 61%, что мне нужно

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Кажется, проблема в том, как данные создаются на веб-сайте. Похоже, что веб-сайт загружает данные с помощью JavaScript (то есть элемент span создается динамически с использованием JavaScript). requests не работает с элементами, которые динамически создаются с помощью JavaScript.

Я рекомендую использовать селен для открытия сайта:

from bs4 import BeautifulSoup
import requests
from selenium import webdriver

url = "https://www.dailyfx.com/sentiment"
browser = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver")
browser.get(url)
soup = BeautifulSoup(browser.page_source, features="html.parser")
a = soup.find("span", {"class": "bullish-color"})
print(a.text)

Выход:

61%

Вам может понадобиться другой способ создания browser (тот, который я показываю выше, работает на macOS с учетом некоторой пользовательской конфигурации). Посмотрите, как создать браузер с использованием селена на вашей платформе.

0 голосов
/ 21 апреля 2019

Попробуйте Css Selector, чтобы получить это.

from bs4 import BeautifulSoup

html='''<span class="bullish-color jsdfx-sentiment-long" style="font-size: 15px;">61%</span>'''
soup=BeautifulSoup(html,'html.parser')
print(soup.select_one("span.bullish-color.jsdfx-sentiment-long").text)

Выход:

61%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...