Почему это ничего не возвращает при поиске класса, который там есть? - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь получить "Next change Id" из html из здесь , и я использую модуль Beautifulsoup4 для этого. Кажется, следующий идентификатор изменения находится в классе stats-Overview, поэтому я попытался найти его, и он просто возвращает пустой список.

import requests
from bs4 import BeautifulSoup

ninja = requests.get("https://poe.ninja/stats")

soup = BeautifulSoup(ninja.content, "html.parser")
stats_overview = soup.find_all("div", class_="stats-overview")
print(stats_overview) # --> prints '[]'

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Сайт загружается через JavaScript, requests модуль не сможет отображать JS на лету.

from selenium import webdriver
import pandas as pd
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)

driver.get("https://poe.ninja/stats")

df = pd.read_html(driver.page_source)[0]

df.to_csv("data.csv", index=False)

driver.quit()

Вывод: view-online

enter image description here

Или позвоните на внутренний номер API напрямую через:

import pandas as pd
import requests



r = requests.get("https://poe.ninja/api/Data/GetStats")
df = pd.read_json(r.text, orient="index")

df.to_csv("data.csv", header=None)
0 голосов
/ 01 апреля 2020

Если вы перейдете с вкладки go на Network, вы получите следующую строку API, которая возвращает данные в формате json.

https://poe.ninja/api/Data/GetStats

import requests

r=requests.get("https://poe.ninja/api/Data/GetStats").json()
print(r['next_change_id'])
print(r['stash_tabs_processed'])
print(r['api_bytes_downloaded'])
print(r['character_bytes_downloaded'])
print(r['ladder_bytes_downloaded'])
print(r['pob_characters_calculated'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...