使用 Python/Django 从 html 获取第一张图片
Posted
技术标签:
【中文标题】使用 Python/Django 从 html 获取第一张图片【英文标题】:Getting first image from html using Python/Django 【发布时间】:2011-09-05 21:31:10 【问题描述】:我正在从服务中抓取一堆 html 并稍微解析它。 我正在寻找一种从第一个图像标签中获取链接的方法。
类似这样的 JQuery 代码:
var imagelink = $('img:first', feed.content).attr('src');
但当然只使用 Python/Django(服务器在 Google 应用引擎上运行)。我宁愿不使用任何其他库,只是为了获取一个简单的链接。
【问题讨论】:
【参考方案1】:这正是我正在寻找的。其实真正的代码是这样的:
tree = BeautifulSoup(raw_html)
img_link = tree.find_all('img')[0].get('src')
效果很好!谢谢 timmy-omahony
【讨论】:
【参考方案2】:如果我对 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
我稍后会改进它,但现在它可以解决问题。欢迎对上述代码提出更多想法/改进建议。
【讨论】:
不知道为什么我自己的答案排名下降。这正是我当时正在寻找的。无需使用库即可找到 img 的简单答案。【参考方案3】:您可以使用 BeautifulSoup 来做到这一点:
http://www.crummy.com/software/BeautifulSoup/
这是一个 XML/HTML 解析器。所以你传入原始 html,然后你可以搜索特定的标签/属性等。
这样的东西应该可以工作:
tree = BeautifulSoup(raw_html)
img_link = (tree.find('img')[0]).attr['src']
【讨论】:
很高兴知道。由于它仅用于一个链接(src),因此我正在寻找一种没有库的方法。目前我的 python 技能在尝试搜索字符串时不是很好,但目前正在学习...... 即使文件中只有一个链接,也有很多 HTML 需要解析。您可以尝试使用正则表达式来查找 的第一个实例,但您可能会发现 BeautifulSoup 方法最简单 不完全是,你需要在 tree.find_all 上做 index 0 但是对于 tree.find 它会找到第一个,所以 index 0 会抛出一个错误以上是关于使用 Python/Django 从 html 获取第一张图片的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量从 python Django 传递到 HTML 模板
从Python / Django生成symfony 2.4密码