Python从URL检索值

时间:2016-08-26 03:32:28

标签: python html urllib2

我正在尝试编写一个python脚本,检查money.rediff.com的特定股票价格并打印出来。我知道这可以通过他们的API轻松完成,但我想了解urllib2是如何工作的,所以我试图以老式的方式做到这一点。但是,我坚持如何使用urllib。许多在线教程向我询问了我需要返回的值的“Inspect元素”并拆分字符串以获取它。但是,视频中的所有示例都具有可轻松拆分HTML标签的值,但我的内容如下:

<div class="f16">
<span id="ltpid" class="bold" style="color: rgb(0, 0, 0); background: rgb(255, 255, 255);">6.66</span> &nbsp; 
<span id="change" class="green">+0.50</span> &nbsp; 

<span id="ChangePercent" style="color: rgb(130, 130, 130); font-weight: normal;">+8.12%</span>
</div>

我只需要Line2中的“6.66”。我该怎么做呢?我对Urllib2和Python非常陌生。所有帮助将不胜感激。提前谢谢。

3 个答案:

答案 0 :(得分:2)

您当然可以只使用urllib2和正则表达式执行此操作,但我建议您使用更好的工具,即requestsBeautiful Soup

这是一个完整的程序来获取“塔塔汽车有限公司”的报价:

from bs4 import BeautifulSoup
import requests

html = requests.get('http://money.rediff.com/companies/Tata-Motors-Ltd/10510008').content

soup = BeautifulSoup(html, 'html.parser')
quote = float(soup.find(id='ltpid').get_text())

print(quote)

修改

以下是仅使用urllib2re

的Python 2版本。

import re
import urllib2

html = urllib2.urlopen('http://money.rediff.com/companies/Tata-Motors-Ltd/10510008').read()

quote = float(re.search('<span id="ltpid"[^>]*>([^<]*)', html).group(1))

print quote

答案 1 :(得分:1)

BeautifulSoup适合html解析

from bs4 import BeautifulSoup

##Use your urllib code to get the source code of the page
source = (Your get code here)
soup = BeautifulSoup(source)
##This assumes the id 'ltpid' is the one you are looking for all the time
span = soup.find('span', id="ltpid")
float(span.text)  #will return 6.66

答案 2 :(得分:1)

使用BeautifulSoup而不是正则表达式来解析HTML。