Я хочу извлечь значение ключа "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)
Я получаю что-то вроде: объект dict не имеет атрибутов содержимого
inputTag = unicode(getattr(soup.findAll('archivo'), 'string', ''))
Я ничего не получаю.
Наконец я увидел: Разница между attrMap и attrs в beautifulSoup и:
for tag in soup.recursiveChildGenerator():
print tag['archivo']
ничего не найти, должен быть тег имя , код или архив ключи.
и, наконец, наконец:
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))