我正在编写一个python 3.3.3程序,用于抓取从此网页获取的值:http://www.oanda.com/currency/live-exchange-rates/。我以英镑/美元为例。我使用BeautifulSoup 4,我有以下代码:
import requests
from bs4 import BeautifulSoup
url = "http://www.oanda.com/currency/live-exchange-rates/"
r = requests.get(url)
soup = BeautifulSoup(r.content)
g_data = soup.find_all("div",{"class": "inline value right"})
for item in g_data:
print (item.contents)
当我运行它时,我得到一长串价值,其中一个是我感兴趣的英镑/美元价值:
['\n', <span class="inline_int" id="GBP_USD-b-int"></span>, <span class="pip"
id="GBP_USD-b-pip"></span>, <span class="inline_pipette" id="GBP_USD-b-ette"></span>, '\n']
问题是这些值不会打印在列表中。
注意:如果我用print (item.contents[0].text)
或print(item.contents[0].find_all())
替换打印功能,我会收到属性错误:AttributeError: 'NavigableString' object has no attribute 'text'
和AttributeError: 'NavigableString' object has no attribute 'find_all'
。所以我无法使用这些函数来获得所需的结果。
因为当您检查该网页上的元素时,您可以清楚地看到打印了一个值:
<span id="GBP_USD-b-int" class="inline_int" style="color: rgb(102, 102, 102);">1.65</span>
<span id="GBP_USD-b-pip" class="pip" style="color: rgb(102, 102, 102);">68</span>
<span id="GBP_USD-b-ette" class="inline_pipette" style="color: rgb(102, 102, 102);">8</span>
我想知道如何显示这些值(1.65,68和8)。我只需要显示这些值,因为我将使用解析器来提取这些值。