我正在尝试抓取网页,并且当我使用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)
答案 0 :(得分:0)
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}
答案 1 :(得分:0)
之所以没有完整的HTML,是因为当您使用请求库发送GET请求时,它不会触发您要抓取的网站上的javascript。
在这里您可以看到没有触发javascript的页面的外观(完全为空):
如果您使用的是chrome,则可以使用开发者工具自行查看。 右键单击->检查元素->网络->设置->禁用JavaScript
如果您不希望使用可见的驱动程序,请使用selenium webdriver或phantomJS。