【问题标题】:Full Html code not importing Beautiful Soup完整的 Html 代码不导入 Beautiful Soup
【发布时间】:2018-10-09 17:42:08
【问题描述】:

我正在尝试抓取网页,当我使用 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)

【问题讨论】:

  • 您能否更具体地说明您要抓取哪些信息?
  • 去网页可以看到算力。这就是我想要的。
  • 所有信息似乎都可以通过他们的 api 获得:ethermine.org/api/pool

标签: python web-scraping beautifulsoup


【解决方案1】:

无法检索所有 HTML 的原因

您没有获得完整 HTML 的原因是,当您使用 requests 库发送 GET 请求时,它不会触发您尝试抓取的网站上的 javascript。

在这里您可以看到没有触发 javascript 的页面是什么样子(完全为空):

如果您使用 chrome,您可以使用开发者工具自行查看。 右键单击->检查元素->网络->设置->禁用javascript

一个可能的解决方案

如果您不想要可见的驱动程序,请使用 selenium webdriver 或 phantomJS。

【讨论】:

  • 好的,我明白了
【解决方案2】:
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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2013-08-01
    • 2023-03-09
    • 2016-06-08
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多