Как вы ссылаетесь на указанный c ID при просмотре веб-страниц в Python? - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь отсканировать этот сайт, чтобы получить основную c биржевую информацию: https://www.macrotrends.net/stocks/charts/AAPL/apple/financial-ratios

Мой код выглядит следующим образом:

from requests import get
from bs4 import BeautifulSoup as bs

url =  'https://www.macrotrends.net/stocks/charts/AAPL/apple/financial-ratios'
response = get(url)
html_soup = bs(response.text, 'html.parser')

stock_container = html_soup.find_all("div", attrs= {'id': 'row0jqxgrid'})


print(len(stock_container))

Сейчас я делаю это медленно и просто пытаюсь вернуть число "div" под идентификатором "row0jqxgrid". Я уверен, что все до строки 8 в порядке, но я не знаю, как правильно ссылаться на идентификатор с помощью attrs, или, если это вообще возможно.

Кто-нибудь может предоставить какую-либо информацию?

Росс

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете использовать селен для этого задания:

from selenium import webdriver
import os


# define path to chrome driver
chrome_driver = os.path.abspath(os.path.dirname(__file__)) + '/chromedriver'
browser = webdriver.Chrome(chrome_driver)
browser.get("https://www.macrotrends.net/stocks/charts/AAPL/apple/financial-ratios")

# get row element
row = browser.find_element_by_xpath('//*[@id="row0jqxgrid"]')

# find all divs currently displayed
divs_list = row.find_elements_by_tag_name('div')

# get text from cells
for item in divs_list:
    print(item.text)

Вывод:

Выходной текст удваивается, поскольку данные таблицы загружаются динамически при перемещении нижнего прокрутки вправо.

Current Ratio
Current Ratio
1.5401
1.5401
1.1329
1.1329
1.2761
1.2761
1.3527
1.3527
1.1088
1.1088
1.0801
1.0801
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...