BeautifulSoup 4从网址中提取数据

时间:2014-08-28 17:04:55

标签: python web-scraping beautifulsoup

我正在编写一个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)。我只需要显示这些值,因为我将使用解析器来提取这些值。

0 个答案:

没有答案