Если это действительно все, что вам нужно сделать, вы можете сделать это с помощью sed
и его опции -i
, чтобы перезаписать файл на месте:
sed -e 's,href="/wiki,href="/home/fergus/wikiget/wiki,' wiki-file.html
Однако, вот решение Python, использующее прекрасный lxml API, на случай, если вам нужно сделать что-то более сложное, или у вас может быть плохо сформированный HTML и т. Д.:
from lxml import etree
import re
parser = etree.HTMLParser()
with open("wiki-file.html") as fp:
tree = etree.parse(fp, parser)
for e in tree.xpath("//a[@href]"):
link = e.attrib['href']
if re.search('^/wiki',link):
e.attrib['href'] = '/home/fergus/wikiget'+link
# Or you can just specify the same filename to overwrite it:
with open("wiki-file-rewritten.html","w") as fp:
fp.write(etree.tostring(tree))
Обратите внимание, что lxml
, вероятно, является лучшим вариантом, чем BeautifulSoup, для такого рода задач в настоящее время по причинам , указанным автором BeautifulSoup.