0

我有这样的字符串

 <img src="http://www.askgamblers.com/cache/97299a130feb2e59a08a08817daf2c0e6825991f_begado-casino-logo-review1.jpg" /><br/>
 Begado is the newest online casino in our listings. As the newest
 member of the Affactive group, Begado features NuWorks slots and games
 for both US and international players.
<img src="http://feeds.feedburner.com/~r/AskgamblesCasinoNews/~4/SXhvCskjiYo" height="1" width="1"/>

我需要src从第一个img标签中获取

我可以轻松做到吗?

4

4 回答 4

4

对于 Python 中的 HTML 屏幕抓取,我推荐Beautiful Soup库。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
images = list(soup.findAll('img'))
print images[0]['src']
于 2012-10-31T21:21:15.683 回答
2

强制性“不要使用正则表达式解析 HTML”警告:https ://stackoverflow.com/a/1732454/505154

邪恶的正则表达式解决方案:

import re
re.findall(r'<img\s*src="([^"]*)"\s*/>', text)

这将返回一个列表,其中包含src每个包含一个属性的<img>标签的属性(因为您说您只想匹配第一个)。src

于 2012-10-31T21:17:09.070 回答
0

一种方法是使用regex

另一种方法是用引号分割字符串,然后获取返回的第二个元素。

splits = your_string.split('"')
print splits[1]
于 2012-10-31T21:16:54.207 回答
0

这是一种快速而丑陋的方法,无需任何库:

"""
    >>> get_src(data)
    ['http://www.askgamblers.com/cache/97299a130feb2e59a08a08817daf2c0e6825991f_begado-casino-logo-review1.jpg', 'http://feeds.feedburner.com/~r/AskgamblesCasinoNews/~4/SXhvCskjiYo']
"""

data = """<img src="http://www.askgamblers.com/cache/97299a130feb2e59a08a08817daf2c0e6825991f_begado-casino-logo-review1.jpg" /><br/>
 Begado is the newest online casino in our listings. As the newest
 member of the Affactive group, Begado features NuWorks slots and games
 for both US and international players.
<img src="http://feeds.feedburner.com/~r/AskgamblesCasinoNews/~4/SXhvCskjiYo" height="1" width="1"/>"""

def get_src(lines):
    srcs = []
    for line in data.splitlines():
        i = line.find('src=') + 5
        f = line.find('"', i)
        if i > 0 and f > 0:
            srcs.append(line[i:f])
    return srcs

但是我会推荐使用Beatiful Soup,它是一个非常好的库,旨在处理真实的网络(损坏的 HTML 和所有),或者如果您的数据是有效的 XML,您可以使用Python 标准库中的Element Tree

于 2012-10-31T21:34:05.490 回答