python - 使用 BeautifulSoup 提取键的值

标签 python beautifulsoup findall getattr

我想提取这样的“archivo”键的值:

...
<applet name="bla" code="Any.class" archive="Any.jar">
<param name="abc" value="space='1' archivo='bla.jpg'" </param>
<param name="def" value="space='2' archivo='bli.jpg'" </param>
<param name="jkl" value="space='3' archivo='blu.jpg'" </param>
</applet>
...

我想我需要一个包含 [bla.jpg, bli.jpg, ...] 的列表,所以我尝试以下选项:

inputTag = soup.findAll("param",{'value':'archivo'})

inputTag = soup.findAll(attrs={"value" : "archivo"})

inputTag = soup.findAll("archivo")

我总是得到一个空列表:[]

其他不成功的选项:

inputTag = soup.findAll("param",{"value" : "archivo"}.contents)

我得到类似的信息:字典对象没有属性内容

inputTag = unicode(getattr(soup.findAll('archivo'), 'string', ''))

我什么也没得到。

终于看到了:Difference between attrMap and attrs in beautifulSoup ,并且:

for tag in soup.recursiveChildGenerator():
    print tag['archivo']

什么也没找到,它必须是 namecodearchive 键的标签。

最后还有更多:

tag.attrs = [(key,value) for key,value in tag.attrs if key == 'archivo']

但 tag.attrs 找不到任何内容

<小时/>

好的,在 jcollado 的帮助下,我可以通过这种方式获取列表:

imageslist = []
patron = re.compile(r"archivo='([\w\./]+)'")
for tag in soup.findAll('param'):
    if patron.search(tag['value']):
        imageslist.append(patron.search(tag['value']).group(1))

最佳答案

这里的问题是 archivo 不是 param 的属性,而是 value 属性内部的东西。要从 value 中提取 archivo,我建议使用正则表达式,如下所示:

>>> archivo_regex = re.compile(r"archivo='([\w\./]+)'")
>>> [archivo_regex.search(tag['value']).group(1)
... for tag in soup.findAll('param')]
[u'bla.jpg', u'bli.jpg', u'blu.jpg']

关于python - 使用 BeautifulSoup 提取键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311084/

相关文章:

python - 使用 Beautiful Soup findall 提取单引号之间的文本

Python CPU Count 在一个 Windows 服务器上工作,但在另一个 Windows 服务器上不工作?

python - 如何正确设置特定模块以在 VS 代码中进行调试?

python - 在 BeautifulSoup 中处理 "next_sibling"时遇到问题

python2.7.8 : TypeError: expected string or buffer with bs4 and re

python - 允许 Python re.findall 从左到右查找重叠的数学

node.js - Nodejs Sequelize 关联/关系包括

python - 如果 bool(item) 为真,则将项目添加到 python 字典

python - 找出总和最接近给定数 N 的三个整数

python - 使用 Beautiful soup 的类属性