Python从URL检索值

Python从URL检索值,python,html,urllib2,Python,Html,Urllib2,我正在尝试编写一个python脚本,用于检查money.rediff.com中的特定股票价格并打印出来。我知道这可以用他们的API轻松完成,但我想了解urllib2是如何工作的,所以我尝试用老式的方式来完成。但是,我被困在如何使用urllib上。许多在线教程要求我返回需要返回的值的“Inspect元素”,并拆分字符串以获取它。但是,视频中的所有示例都具有易于拆分HTML标记的值,但我的示例中有这样的值: <div class="f16"> <span id="ltpid" cl

我正在尝试编写一个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>

6.66
+0.50   
+8.12%

我只需要第二行的“6.66”就行了。我该怎么做呢?我对Urllib2和Python非常陌生。我们将非常感谢您的帮助。提前感谢。

您当然可以使用
urllib2
和正则表达式来实现这一点,但我鼓励您使用更好的工具,即和

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

编辑

这里有一个Python 2版本,它只使用了
urllib2
re

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
重新导入
导入urllib2
html=urllib2.urlopen('http://money.rediff.com/companies/Tata-Motors-Ltd/10510008)。读()

quote=float(重新搜索(']*>([^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

使用BeautifulSoup而不是regex来解析HTML。

非常感谢!你能像对孩子一样向我解释一下这段代码是如何工作的吗?我怎样才能只用urllib2来完成这项工作?如果你不能回答我关于这条评论的第二个问题,那也没关系,但是如果你能告诉我在这种情况下该怎么做的其他来源这可能真的很有用。再次感谢!可能会有帮助。BS4是做得很好的唯一方法吗?我想知道urllib2方法有多复杂。有没有相关的源代码/参考资料?请参阅我的编辑,了解仅使用urllib2和正则表达式的替代方法。我认为Beautiful Soup更好。:-)确实漂亮!(双关语!)非常感谢!
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