我正在编写一个函数来一次编辑html文件中的许多字符串。然而,这些要求有点特殊。这是一个例子。
我的字符串:
a href='http://en.wikipedia.org/wiki/Velocity'>
<img src="/uploads/3/3/9/3/3393839/____________________________________________________________________________________________________________________________________________________614162727.png" alt="Picture" style="width:100%;max-width:220px" />
</a>
<div style="display:block;font-size:90%"></div>
</div></div>
</td>
<td class='wsite-multicol-col' style='width:50%;padding:0 5px'>
<div><div class="wsite-image wsite-image-border-none " style="padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;text-align:right">
<a href='http://www2.franciscan.edu/academic/MathSci/MathScienceIntegation/MathScienceIntegation-827.htm'>
<img src="/uploads/3/3/9/3/3393839/___________________________________________________________________________________________________________________________________308536556.png" alt="Picture" style="width:100%;max-width:595px" />
</a>
实际字符串更长!我正在尝试将所有引用维基百科链接的图像替换为一个图像,并将所有引用另一个链接的图像替换为另一个图像。
这是我到目前为止所拥有的:
wikiPath = r"www.somewebsite.com/myimage.png"
def dePolute(myString):
newString =""
# Last index found
lastIndex = 0
while True:
wikiIndex = myString.index('wikipedia',lastIndex)
picStartIndex = myString.index('<img ', wikiIndex)
picEndIndex = myString.index('/>', wikiIndex)
newString = re.sub(r'<img.*?/>','src="' + wikiPath ,myString,1)
return newString
所以这显然不起作用 - 但我的想法是首先找到所有这些链接存在的'wiki'关键字的索引,以及从该索引开始的img标记之间的sub。不幸的是我不知道怎么做re.sub但是从特定索引开始。我不能做newString = re.sub(规范,newEntry,originalString [wikiIndex:])因为那会返回一个子字符串,而不是整个字符串。
这是我希望My String在程序运行完毕后的样子:
a href='http://en.wikipedia.org/wiki/Velocity'>
<img src="www.somewebsite.com/myimage.png" alt="Picture" style="width:100%;max-width:220px" />
</a>
<div style="display:block;font-size:90%"></div>
</div></div>
</td>
<td class='wsite-multicol-col' style='width:50%;padding:0 5px'>
<div><div class="wsite-image wsite-image-border-none " style="padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;text-align:right">
<a href='http://www2.franciscan.edu/academic/MathSci/MathScienceIntegation/MathScienceIntegation-827.htm'>
<img src="/uploads/3/3/9/3/3393839/___________________________________________________________________________________________________________________________________308536556.png" alt="Picture" style="width:100%;max-width:595px" />
</a>
答案 0 :(得分:4)
我会使用HTML解析器,例如BeautifulSoup
。
我们的想法是使用 CSS选择器来查找位于img
a
内的wikipedia
元素内的href
个元素。对于每个img
元素,请替换src
属性值:
from bs4 import BeautifulSoup
data = """your HTML"""
soup = BeautifulSoup(data, "html.parser")
for img in soup.select("a[href*=wikipedia] img[src]"):
img["src"] = wikiPath
print(soup.prettify())