当我在re模块中抓取网站时,我正在努力识别匹配的表达式。我尝试使用Python爬网多个网站,发现re模块的findall函数只返回多个值(例如,具有相同类的表达式)。有什么方法可以像下面这样返回字符串(股票价格从美国有线电视新闻网)? 当我尝试这样做时,我只得到一个空数组
<span stream="last_36276" streamformat="ToHundredth" streamfeed="SunGard">109.95</span>
以下是我使用python3.5.1从cnn资金中获取苹果股票价格的代码
我们非常感谢您的帮助:
import urllib.request
import re
with urllib.request.urlopen("http://money.cnn.com/quote/quote.html?symb=AAPL") as url:
s = url.read()
pattern = re.compile(b'<span stream="last_205778" streamformat="ToHundredth" streamfeed="SunGard">(.+?)</span>')
price=re.findall(pattern,s)
print(price)
#Searching for the first two expressions works, but the last one returns empty array
#<span title="2010-10-19 14:59:01Z" class="relativetime">Oct 19 10 at 14:59</span>
#<span itemprop="upvoteCount" class="vote-count-post ">45</span>
#<span stream="last_205778" streamformat="ToHundredth" streamfeed="SunGard">60.64</span>
您说您想要
stream="last_36276"
,但您正在搜索stream="last_205778"
。后者在该页上找不到,因此re.findall()
正确地返回一个空列表。在另外,您正在搜索}。同上
streamformat
,但实际页面有{streamfeed
与streamFeed
。在相关问题 更多 >
编程相关推荐