Python 在HTML文件中查找所有*渲染*图像
我需要一种在HTML片段中只查找呈现的IMG标记的方法。因此,我不能只对HTML片段进行正则化以查找所有IMG标记,因为我还可以得到在HTML中显示为文本的IMG标记(未呈现) 我在AppEngine上使用Python 有什么想法吗 谢谢,Python 在HTML文件中查找所有*渲染*图像,python,html,regex,parsing,Python,Html,Regex,Parsing,我需要一种在HTML片段中只查找呈现的IMG标记的方法。因此,我不能只对HTML片段进行正则化以查找所有IMG标记,因为我还可以得到在HTML中显示为文本的IMG标记(未呈现) 我在AppEngine上使用Python 有什么想法吗 谢谢, Ivan呈现的img标记的源代码如下: <img src="img.jpg"></img> <img src="styles/BWLogo.jpg"><
Ivan呈现的img标记的源代码如下:
<img src="img.jpg"></img>
<img src="styles/BWLogo.jpg"></img>
是“”字符
要仅匹配渲染的img标记,可以使用正则表达式匹配由<和>,而不是<代码>和<代码>构成的img标记
注释中的Img标记也需要通过在“
”之间插入字符来忽略。呈现的Img标记的源代码如下所示:
<img src="img.jpg"></img>
<img src="styles/BWLogo.jpg"></img>
是“”字符
要仅匹配渲染的img标记,可以使用正则表达式匹配由<和>,而不是<代码>和<代码>构成的img标记
注释中的Img标记也需要通过在“
”之间插入字符来忽略,因为图像标记可能位于某些标记或标记之间,您可能需要遍历dom(=将html转换为xml/dom树并在其中搜索)并查找所有节点。python标准库中有一个xml.dom类:
>>> from BeautifulSoup import BeautifulSoup
>>> doc = """
... <html>
... <body>
... <img src="test.jpg">
... <img src="yay.jpg">
... <!-- <img src="ohnoes.jpg"> -->
... <img src="hurrah.jpg">
... </body>
... </html>
... """
>>> soup = BeautifulSoup(doc)
>>> soup.findAll('img')
[<img src="test.jpg" />, <img src="hurrah.jpg" />]
您也可以在客户机上这样做,并通过ajax报告(这意味着服务器上会有更多的负载)。由于图像标记可能位于一些或标记之间,您可能需要遍历dom(=将html转换为xml/dom树并搜索),然后查找所有节点。python标准库中有一个xml.dom类:
>>> from BeautifulSoup import BeautifulSoup
>>> doc = """
... <html>
... <body>
... <img src="test.jpg">
... <img src="yay.jpg">
... <!-- <img src="ohnoes.jpg"> -->
... <img src="hurrah.jpg">
... </body>
... </html>
... """
>>> soup = BeautifulSoup(doc)
>>> soup.findAll('img')
[<img src="test.jpg" />, <img src="hurrah.jpg" />]
您也可以在客户机上这样做,并通过ajax报告(这意味着服务器上会有更多负载)。使用。它是一个用于Python的HTML/XML解析器,提供了导航、搜索和修改解析树的简单、惯用的方法。它可能不会被虚假的img标签弄错。使用。它是一个用于Python的HTML/XML解析器,提供了导航、搜索和修改解析树的简单、惯用的方法。它可能不会被虚假的img标签弄错。听起来像是一份工作:
>>从BeautifulSoup导入BeautifulSoup
>>>doc=”“”
...
...
...
…img src=“yay.jpg”
...
...
...
...
... """
>>>汤=美汤(doc)
>>>soup.findAll('img'))
[, ]
如您所见,BeautifulSoup足够聪明,可以忽略注释和显示的HTML
编辑:但我不确定你所说的转义所有图像的RSS提要是什么意思。我不希望BeautifulSoup知道如果他们都逃脱了,应该显示哪些内容。你能澄清一下吗?听起来像是针对以下人员的工作:
>>从BeautifulSoup导入BeautifulSoup
>>>doc=”“”
...
...
...
…img src=“yay.jpg”
...
...
...
...
... """
>>>汤=美汤(doc)
>>>soup.findAll('img'))
[, ]
如您所见,BeautifulSoup足够聪明,可以忽略注释和显示的HTML
编辑:但我不确定你所说的转义所有图像的RSS提要是什么意思。我不希望BeautifulSoup知道如果他们都逃脱了,应该显示哪些内容。你能澄清一下吗?“我也会得到在HTML中显示为文本的IMG标记”-你能解释一下/举个例子吗?我不知道你这是什么意思。你是说你想要的图像不是404的吗?那些不在隐藏div中的?哦,我知道这是另一个html正则表达式问题。在一些网页上,会显示一些代码片段,这些代码片段中有IMG标记。所以这些IMG标签不会呈现为图像,它们只是显示为文本。断开的URL和隐藏的图像不是问题。“我也会得到在HTML中显示为文本的IMG标记”-你能解释一下/举个例子吗?我不知道你这是什么意思。你是说你想要的图像不是404的吗?那些不在隐藏div中的?哦,我知道这是另一个html正则表达式问题。在一些网页上,会显示一些代码片段,这些代码片段中有IMG标记。所以这些IMG标签不会呈现为图像,它们只是显示为文本。损坏的URL和隐藏的图像不是问题。是的,你是对的。我认为对于评论,你可以使用正则表达式来忽略“”之间的任何字符是的,你是对的。我认为对于评论,您可以使用正则表达式来忽略“”之间的任何字符。谢谢!我要试一试。这个场景实际上有点复杂——我正在解析RSS内容片段,其中包含“谢谢!我要试一试。这个场景实际上有点复杂——我正在解析RSS内容片段,其中包含所有