2011-05-31 85 views
3

我从服务中获取一堆html并稍微解析它。 我正在寻找一种方法来抓取第一个图像标签中的链接。使用Python/Django从html获取第一张图片

也有类似这样的jQuery代码:

var imagelink = $('img:first', feed.content).attr('src'); 

当然,但只使用Python的/ Django的(服务器上的谷歌应用程序引擎运行)。我宁愿不使用任何其他库,只是为了获取一个简单的链接。

回答

0

如果我做任何HTML多个解析我可能会看进入其中一个建议的图书馆。但现在我已经解决了这个问题:

startImgPos = post.find('<img', 0, len(post)) + 4 
    if(startImgPos > -1): 
     endImgPos = post.find('>', startImgPos, len(post)) 
     imageTag = post[startImgPos:endImgPos] 
     startSrcPos = imageTag.find('src="', 0, len(post)) +5 
     endSrcPos = imageTag.find('"', startSrcPos , len(post)) 
     linkTag = imageTag[startSrcPos:endSrcPos] 
     r['linktag'] = linkTag 

我会稍后改进,但现在它的确有窍门。随意对上述代码提出更多建议/改进建议。

+0

不知道为什么我自己的答案被排名下来。这正是我当时所期待的。一个简单的答案找到一个IMG没有使用库。 – Zammbi 2015-10-21 20:29:48

7

您可以使用BeautifulSoup来做到这一点:

http://www.crummy.com/software/BeautifulSoup/

这是一个XML/HTML解析器。所以,你在原始的HTML传递,然后你可以搜索其特定标签/ ATTRS等

这样的事情应该工作:

tree = BeautifulSoup(raw_html) 
img_link = (tree.find('img')[0]).attr['src'] 
+1

http://lxml.de/elementsoup.html – 2011-06-01 00:06:25

+0

很高兴知道。既然它只是一个链接(src),我正在寻找一种没有图书馆的方式。目前我的python技能并不是很棒,但是现在正在学习... – Zammbi 2011-06-01 02:01:31

+2

尽管它只是用于文件中的一个链接,但还是有很多HTML需要解析。您可以尝试使用正则表达式来查找的第一个实例,但您可能会发现BeautifulSoup方法最简单 – 2011-06-01 02:24:45