Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6

Я использую сценарий ниже, чтобы сбрасывать данные «STOCK QUOTE» с сайта http://fortune.com/fortune500/xcel-energy/ , но он дает пустоту.

Я также использовал драйвер selenium, но тот же вопрос. Пожалуйста, помогите по этому поводу.

import requests from bs4 import BeautifulSoup as bs import pandas as pd r = requests.get('http://fortune.com/fortune500/xcel-energy/') soup = bs(r.content, 'lxml') # tried: 'html.parser data = pd.DataFrame(columns=['C1','C2','C3','C4'], dtype='object', index=range(0,11)) for table in soup.find_all('div', {'class': 'stock-quote row'}): row_marker = 0 for row in table.find_all('li'): column_marker = 0 columns = row.find_all('span') for column in columns: data.iat[row_marker, column_marker] = column.get_text() column_marker += 1 row_marker += 1 print(data) 

Выход:

  C1 C2 C3 C4 0 Previous Close: NaN NaN 1 Market Cap: NaNB NaN B 2 Next Earnings Date: NaN NaN 3 High: NaN NaN 4 Low: NaN NaN 5 52 Week High: NaN NaN 6 52 Week Low: NaN NaN 7 52 Week Change %: 0.00 NaN NaN 8 P/E Ratio: n/a NaN NaN 9 EPS: NaN NaN 10 Dividend Yield: n/a NaN NaN 

Снимок экрана источника

One Solution collect form web for “Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6”

Похоже, что данные, которые вы ищете, доступны на этой конечной точке API :

 import requests response = requests.get("http://fortune.com/api/v2/company/xel/expand/1") data = response.json() print(data['ticker']) 

FYI, при открытии страницы в автоматизированном браузере с селеном вам просто нужно убедиться, что вы дождались появления нужных данных до разбора HTML- кода:

 from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import pandas as pd url = 'http://fortune.com/fortune500/xcel-energy/' driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) driver.get(url) wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".stock-quote"))) page_source = driver.page_source driver.close() # HTML parsing part soup = BeautifulSoup(page_source, 'lxml') # tried: 'html.parser data = pd.DataFrame(columns=['C1','C2','C3','C4'], dtype='object', index=range(0,11)) for table in soup.find_all('div', {'class': 'stock-quote'}): row_marker = 0 for row in table.find_all('li'): column_marker = 0 columns = row.find_all('span') for column in columns: data.iat[row_marker, column_marker] = column.get_text() column_marker += 1 row_marker += 1 print(data) 
  • Данные веб-скрепок с использованием python?
  • веб-соскабливание динамического содержимого с помощью python
  • Python: csv.writer, записывающий каждый символ слова в отдельном столбце / ячейке
  • Использование Python для очистки вложенных разделов и интервалов в Twitter?
  • Как я могу нажать кнопку «Дополнительно» при веб-сканировании Tripadvisor с использованием селена?
  • Нажмите кнопки с изображениями
  • Очистка Google Finance (BeautifulSoup)
  • Селен Python пропускает необходимые элементы
  • Python - лучший язык программирования в мире.