Полный HTML-код не импортирует Beautiful Soup - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь почистить веб-страницу, и когда я получаю страницу, используя request.get (), я не получаю весь HTML-код.Когда я выполняю код, в теле появляется пустой тег div.Я не уверен, почему это происходит.Может кто-нибудь, пожалуйста, помогите мне с этим?

from bs4 import BeautifulSoup
import smtplib
import requests
r = requests.get("https://ethermine.org/miners/8153516Db85e201abD29A0FfCcd9cCeF4aFF33c6/dashboard")
data = r.text
print(data)
soup = BeautifulSoup(data,'html.parser')
mydivs = soup.find("div", attrs={"class": "card-body"})
h5 = mydivs.findChild()
span= h5.findChild()
print (span.text)

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Причина, по которой вы не можете получить весь HTML

Причина, по которой вы не получаете полный HTML, заключается в том, что когда вы отправляете запрос GET с использованием библиотеки запросов, он не вызываетjavascript на сайте, который вы пытаетесь очистить.

Здесь вы можете увидеть, как выглядит страница без запуска javascript (полностью пустой): enter image description here

Если вы используете Chrome, вы можете использовать инструмент разработчика дляпосмотрите это сами.Щелкните правой кнопкой мыши -> осмотреть элемент -> сеть -> настройки -> отключить javascript

Возможное решение

Используйте selenium webdriver или phantomJS, если вы не хотите видеть драйвер.

0 голосов
/ 09 октября 2018
In[2]: import requests
  ...: 
  ...: url = 'https://api.ethermine.org/miner/8153516Db85e201abD29A0FfCcd9cCeF4aFF33c6/dashboard'
  ...: r = requests.get(url)
  ...: r.raise_for_status()
  ...: data = r.json()
In[3]: data['data']['currentStatistics']
Out[3]: 
{'time': 1539117000,
 'lastSeen': 1539116966,
 'reportedHashrate': 764394781,
 'currentHashrate': 794166666.6666665,
 'validShares': 679,
 'invalidShares': 0,
 'staleShares': 55,
 'activeWorkers': 7,
 'unpaid': 196476273209661060}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...