python:从html获取图像链接

时间:2011-05-08 11:02:14

标签: python xml regex

来自这样的html / rss片段

[...]<div class="..." style="..."></div><p><a href="..."
<img alt="" heightt="" src="http://link.to/image"
width="" /></a><span style="">[...]

我想获取图像src链接“http://link.to/image.jpg”。我怎么能在python中这样做?感谢。

5 个答案:

答案 0 :(得分:4)

lxml是工作的工具。

从网页上抓取所有图片就像这样简单:

import lxml.html

tree = lxml.html.parse("http://example.com")
images = tree.xpath("//img/@src")

print images

,并提供:

['/_img/iana-logo-pageheader.png', '/_img/icann-logo-micro.png']

如果是RSS源,您需要使用lxml.etree解析它。

答案 1 :(得分:0)

也许你应该从阅读Regex Howto教程和StackOverflow中的FAQ开始,它说每当你处理XML(HTML)时都不要使用Regex,而是使用好的解析器,在你的情况下,{{3是一个。

使用Regex,您可以这样做以获取图像的链接:

import re
pattern = re.compile(r'src="(http://.*\.jpg)"')
pattern.search("yourhtmlcontainingtheimagelink").group(1)

答案 2 :(得分:0)

要添加svick的答案, 尝试使用BeautifuSoup解析器,它在过去对我有用。

答案 3 :(得分:0)

使用urllib和beautifulsoup:

import urllib
from BeautifulSoup import BeautifulSoup

f = urllib.urlopen(url)
page = f.read()
f.close()          
soup = BeautifulSoup(page)
for link in soup.findAll('img'):
    print "IMAGE LINKS:", link.get('data-src') 

答案 4 :(得分:0)

根据tornado spider

获取html标记数据
from HTMLParser import HTMLParser

def get_links(html):
    class URLSeeker(HTMLParser):
        def __init__(self):
            HTMLParser.__init__(self)
            self.urls = []

        def handle_starttag(self, tag, attrs):
            if tag == 'img':
                src = dict(attrs).get('src')
                if src:
                    self.urls.append(src)

    url_seeker = URLSeeker()
    url_seeker.feed(html)
    return url_seeker.urls