sto cercando di usare lxml per leggere html da una stringa e quindi provare a trovare tutti i tag img, aggiornare l'attributo dell'immagine src e aggiungere ipertesto attorno ad ogni immagine trovatolxml python carica la stringa html senza intestazione e corpo e aggiunge elemento attorno agli elementi mirati
quindi questo,
<img src="old-value" />
sarà presente
<a href=""><img src="new-value" /></a>
il problema sono rivestimento è due, primo using etree.HTML per caricare la stringa html che f o qualche motivo è aggiungere tag html e body tag allo stesso html. C'è un modo per caricarlo senza che ciò avvenga automaticamente?
Un altro problema non sono in grado di risolvere, Come faccio ad aggiungere l'elemento di collegamento ipertestuale attorno al tag di immagine, ho provato il seguito, ma sarebbe aggiungere l'elemento di collegamento ipertestuale all'interno del tag img
tree = etree.HTML(self.content)
imgs = tree.xpath('.//img')
thm = "new-value"
for img in imgs:
img.set('src', thm)
a = etree.Element('a', href="#")
img.insert(0, a)
Uno può consigliare per favore?
aggiornamento:
ho provato l'approccio fornito da @Alko e la sua funziona bene, ma ha un problema con il tipo di contenuto sto usando.
Il tag img si trova all'interno tag p, come nell'esempio qui sotto
<html><body><p><img src="/public_media/cache/66/ed/66edd1c01e3027ba18bef9244ca8e8b4.jpg?id=31"/>jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh skjhs kjsh skjh skjh ksj ksjh jsk hskjh s</p><p>jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh
skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh
skjhs kjsh skjh skjh ksj ksjh jsk hskjh s</p></body></html>
che cosa sta accadendo quando ho eseguito la soluzione data, la chiusura viene aggiunto un tag dopo la fine del paragrafo.
grande che inizi a usare 'LXML' ora. Potresti accettare la risposta da dove hai avuto questa idea/conoscenza - come ha risolto il tuo problema per sostituire il valore 'src': http://stackoverflow.com/questions/20595735/python-regular-expression-find-and -replace-html-tag-con-specific-attribute-valu/20629768 # 20629768 – Jon
Ho appena fatto, grazie jon :) .. apprezzo il tuo input –