【发布时间】:2015-11-21 21:44:09
【问题描述】:
我正在尝试解析来自this bank website 的货币。在代码中:
import requests
import time
import logging
from retrying import retry
from lxml import html
logging.basicConfig(filename='info.log', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
@retry(wait_fixed=5000)
def fetch_data_from_nb_ved_ru():
try:
page = requests.get('http://www.nbu.com/exchange_rates')
#print page.text
tree = (html.fromstring(page.text))
#fetched_ved_usd_buy = tree.xpath('//div[@class="exchangeRates"]/table/tbody/tr[5]/td[5]')
fetched_ved_usd_buy = tree.xpath('/html/body/div[1]/div//div[7]/div/div/div[1]//text()')
print fetched_ved_usd_buy
fetched_ved_usd_sell = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[6]/td[6]/text()')).strip()
fetched_ved_eur_buy = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[7]/td[5]/text()')).strip()
fetched_ved_eur_sell = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[7]/td[6]/text()')).strip()
fetched_cb_eur = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[7]/td[4]/text()')).strip()
fetched_cb_rub = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[18]/td[4]/text()')).strip()
fetched_cb_usd = str(tree.xpath('/html/body/div[1]/div/div[7]/div/div/div[1]/table/tbody/tr[6]/td[4]/text()')).strip()
except:
logging.warning("NB VED UZ fetch failed")
raise IOError("NB VED UZ fetch failed")
return fetched_ved_usd_buy, fetched_ved_usd_sell, fetched_cb_usd, fetched_ved_eur_buy, fetched_ved_eur_sell,\
fetched_cb_eur, fetched_cb_rub
while True:
f = open('values_uzb.txt', 'w')
ved_usd_buy, ved_usd_sell, cb_usd, ved_eur_buy, ed_eur_sell, cb_eur, cb_rub = fetch_data_from_nb_ved_ru()
f.write(str(ved_usd_buy)+'\n'+str(ved_usd_sell)+'\n'+str(cb_usd)+'\n'+str(ved_eur_buy)+'\n'+str(ed_eur_sell)+'\n'
+ str(cb_eur)+'\n'+str(cb_rub))
f.close()
time.sleep(120)
但它总是返回空字符串,但是如果我这样做print page.text,我可以看到这些值在他们的位置上。
我从萤火虫那里得到了那个xpath。 Chrome 提供相同的 xpath。
试图构建自己的xpath
//div[@class="exchangeRates"]/table/tbody/tr[5]/td[5]
但它恰好是无效的。
有什么建议吗? 谢谢。
【问题讨论】:
-
尝试在 xpath 中不使用 tbody。
-
看起来 nbu 站点已关闭
-
@AnandSKumar,删除了 tbody,结果是一样的 :(
标签: python html xpath request lxml