使用Python从HTML页面中提取图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Python从HTML页面中提取图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1262字,纯文字阅读大概需要2分钟。
内容图文
![使用Python从HTML页面中提取图像](/upload/InfoBanner/zyjiaocheng/732/05935d2b395943e3abb97bb6e2946004.jpg)
以下是我的代码.它试图在html中的图像标记内获取图像的src.
import re
for text in open('site.html'):
matches = re.findall(r'\ssrc="([^"]+)"', text)
matches = ' '.join(matches)
print(matches)
问题是当我输入类似的东西:
<img src="asdfasdf">
它可以工作但是当我放入一个完整的HTML页面时,它什么都不返回.为什么这样做?我该如何解决?
Site.html只是标准格式的网站的HTML代码.我希望它忽略一切,只打印图像的源代码.如果您想查看site.html内部的内容,请转到基本的HTML网页并复制所有源代码.
解决方法:
为什么使用正则表达式解析HTML时,可以使用BeautifulSoup之类的东西轻松地执行此操作:
>>> from bs4 import BeautifulSoup as BS
>>> html = """This is some text
... <img src="asdasdasd">
... <i> More HTML <b> foo </b> bar </i>
... """
>>> soup = BS(html)
>>> for imgtag in soup.find_all('img'):
... print(imgtag['src'])
...
asdasdasd
您的代码无法工作的原因是因为文本是文件的一行.因此,您只在每次迭代中找到一条线的匹配项.虽然这可能有效,但请考虑最后一行是否没有图像标记.匹配将是一个空列表,并且join将使其成为”.您将覆盖变量匹配每一行.
你想在整个HTML上调用findall:
import re
with open('site.html') as html:
content = html.read()
matches = re.findall(r'\ssrc="([^"]+)"', content)
matches = ' '.join(matches)
print(matches)
在这里使用with语句更加pythonic.这也意味着您之后不必调用file.close(),因为with语句处理它.
内容总结
以上是互联网集市为您收集整理的使用Python从HTML页面中提取图像全部内容,希望文章能够帮你解决使用Python从HTML页面中提取图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。