Vous pourrez peut-être utiliser BeautifulSoup pour Python comme ça.
import BeautifulSoup soup = BeautifulSoup.BeautifulSoup(htmldata) nav = soup.find("nav") nav.name = "new name"
Par exemple:
import BeautifulSoup html_data = "Some text " soup = BeautifulSoup.BeautifulSoup(html_data) nav = soup.find("nav") nav.name = "nav2"
Va changer:
vers
N’utilisez pas l’expression rationnelle ou l’parsing syntaxique. Ceux-ci ne feront que blesser votre tête. Utilisez un parsingur.
En Ruby, j’utiliserais Nokogiri:
require 'nokogiri' html = ' ... ' doc = Nokogiri::HTML(html) nav = doc.at('nav').content = "this is a new block" puts doc.to_html
Quelles sorties:
this is a new block
Bien sûr, vous voulez remplacer "this is a new block"
par quelque chose comme File.read('snippet.html')
.
Si votre fichier de substitutions contient des extraits HTML au lieu du contenu de la nav
, utilisez plutôt ceci:
nav = doc.at('nav').replace('this is a new block ')
La sortie serait la même. (Et, encore une fois, utilisez File.read
pour saisir cela dans un fichier si cela vous convient.)
Dans Nokogiri, at
trouve la première instance de la balise spécifiée par un accesseur CSS ou XPath et renvoie le nœud. J’ai utilisé CSS ci-dessus, mais //nav
aurait également fonctionné. at
deviner le type d’accesseur. Vous pouvez utiliser at_css
ou at_xpath
si vous souhaitez être spécifique, car il est possible d’avoir des accesseurs ambigus. De plus, Nokogiri a une search
, qui retourne un NodeSet, qui agit comme un tableau. Vous pouvez parcourir les résultats en faisant ce que vous voulez. Et, comme at
, il existe des versions spécifiques à CSS et XPath, respectivement css
et xpath
.
Nokogiri a une interface CLI et, pour quelque chose d’aussi simple que cet exemple, cela fonctionnerait, mais je pourrais aussi le faire dans sed ou dans un one-liner Ruby / Perl / Python.
curl -s http://nokogiri.org | nokogiri -e'p $_.css("h1").length'
HTML est rarement aussi simple que cela, en particulier tout ce qui se trouve dans les zones sauvages, et une solution CLI ou une solution à un trait se développera rapidement, ou mourra. Je dis que sur la base d’années d’écriture de nombreux araignées et agrégateurs RSS, ce qui est simple commence à devenir beaucoup plus complexe lorsque vous introduisez une source HTML ou supplémentaire, et cela ne devient jamais plus simple. L’utilisation des parsingurs m’a appris à y aller en premier.