关于芬德尔返回匹配表达式的空数组

2024-10-02 10:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在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>

Tags: 模块importrestream表达式网站cnnlast
1条回答
网友
1楼 · 发布于 2024-10-02 10:26:57

您说您想要stream="last_36276",但您正在搜索stream="last_205778"。后者在该页上找不到,因此re.findall()正确地返回一个空列表。在

另外,您正在搜索streamformat,但实际页面有{}。同上streamfeedstreamFeed。在

相关问题 更多 >

    热门问题