Попытка получить элемент из BeautifulSoup, но может быть заблокирована - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь получить координаты на графике, который указан в HTML.

URL: "http://www.worldacd.com/index"

HTML: HTML

Я дошел до этого:

import requests
from bs4 import BeautifulSoup

wacd_homepage = requests.get("http://www.worldacd.com/index")
wacd_homepage_soup = BeautifulSoup(wacd_homepage.content, "html.parser")

soup = wacd_homepage_soup.body.find("div", {"class":"container main"}).find("div", {"id":"content"}).find("div", {"class":"tab-content"}).find("div", {"class":"tab-pane active"}).find("div", {"class":"row"}).find("div",{"class":"span10"}).find("div",{"class":"wrapper"}).find("div",{"class":"chart"})
soup

В результате получится всего одна строчка:

<div class="chart" id="chart_index"></div>

Больше нечего видеть. В конечном счете, я хочу попасть в сегмент, как указано на рисунке. HTML частично заблокирован (не уверен, что здесь используется правильная терминология)?

1 Ответ

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

Я обнаружил, что элемент "chart_index" используется для библиотеки диаграмм Google. Вы можете найти строку 860 в исходном коде "http://www.worldacd.com/index"

chart_index = new google.visualization.LineChart(document.getElementById('chart_index'));

Я думаю, что вы можете получить координаты на графике, используя parse JS.

например,

import requests
from bs4 import BeautifulSoup

wacd_homepage = requests.get("http://www.worldacd.com/index")
wacd_homepage_soup = BeautifulSoup(wacd_homepage.content, "html.parser")

soup = wacd_homepage_soup.find_all('script', {"type":"text/javascript"})
print(soup)

В содержимом "супа" вы можете найти координаты на графике, например "[new Date (2009, 1, 1), 98.55, 94.86, 96.25] "каждый" USD "," EUR "и" CNY ".

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