【发布时间】:2017-11-28 02:08:55
【问题描述】:
对于一个学校项目,我想编写一个 python 程序,从这个网站提取比特币的当前价值:http://www.coindesk.com/price/。为此,我安装了 BeautifulSoup4 和 Requests 库,以便提取 HTML 数据并对其进行解析,但是当实际得到价格时,我的程序什么也没有返回。这是我想要得到的picture。这是我的代码:
import requests as r
from bs4 import BeautifulSoup as bs
doc = r.get("http://www.coindesk.com/price/")
soup = bs(doc.content, "html.parser")
price = soup.find_all("a", {"class":"bpiUSD"})
text = []
contents = []
for item in price:
text.append(item.text)
for item in price:
contents.append(item.contents)
print "text:", type(text[0])
print "contents:", type(contents[0])
print "text[0]:", text[0]
print "contents[0]", contents[0]
这是输出:
text: <type 'unicode'>
contents: <type 'list'>
text[0]:
contents[0] []
我用这种方式来获取字符串和数字,它可以工作,但是当涉及到这个特定的数字时,它什么也没返回。另外,我知道比特币价格是 Unicode 格式的(至少我假设是这样的),我尝试将其转换为字符串值,但尽管 .type() 函数确实提到列表是 Unicode,但没有任何效果。
【问题讨论】:
-
price 实际上并不包含价格。制作后立即打印价格检查。价格可能由一些 javascript 代码决定,所以你可能想使用 Selenium webdriver 之类的东西
-
如果要使用request和bs4,就得另找网站了
-
等一下,我正在寻找的值是由单独的 javascript 程序生成的吗?对不起,如果我的任务看起来很愚蠢,但我只是一个初学者。
-
很有可能。你也可以试试dryscrape之类的东西
标签: python python-2.7 unicode python-requests bs4