2017-06-08 20 views
0

私はHTMLファイルから、各行の "href"と "src"の内容を他の文字列に置き換える方法を探しています。だから、私はこれを交換する必要があります。これにより文字列を取得し、他の文字列に置き換えますか?

<img src="images/file.png" alt=""> 

<img src="data:image/png;base64,PD94bWwgdmVyc2lvbj0i..." alt=""> 

は、実際に私は、base64にファイルを変換することができます関数を記述します。私はhref/srcを検索し、ファイルパスの内容を取って、ファイルのbase64バージョンに置き換える必要がありますが、どのようにすればよいか分かりません。ここで

BASE64にファイルを変換する機能:

def filetoB64 (fpath=None,raw=False): 
    fstring = None 
    fmime = None 
    freturn = None 

    if fpath is not None: 
     if os.path.isfile(fpath): 
      fmime = mimetypes.MimeTypes().guess_type(fpath)[0] 

      if fmime in (filemimes['text'] + filemimes['image'] + filemimes['audio'] + filemimes['video']): 
       with open(fpath,'rb') as f: 
        fcontent = f.read() 
        fstring = base64.encodestring(fcontent).replace('\n','') 

        if raw: 
         freturn = fstring 
        else: 
         freturn = ''.join(['data:',fmime,';base64,',fstring]) 
      else: 
       freturn = fpath 
     else: 
      freturn = fpath 

    return freturn 

答えて

1

私はbase64にファイルを変換するためにあなたの機能が十分に機能していることを想定しています。

あなたのHTMLコードにいくつかのタグを交換したい場合は、この例のようにregex使用することができます。

import re 

string = '<img src="images/file.png" href="http://wwww.linktoreplace.com", alt="">' 

to_replace = re.findall('(\w+)="(.*?)"', string) 

for k, v in to_replace: 
    if k == 'src': 
     string = re.sub(v, "src_replaced_by_this_string", string) 
    if k == 'href': 
     string = re.sub(v, "href_replaced_by_this_string", string) 

print(string) 

出力:

<img src="src_replaced_by_this_string" href="href_replaced_by_this_string", alt=""> 

をそれ以外の場合は、PythonであるBeautifulSoupを使用することができますHTMLおよびXMLファイルからデータを取り出すためのライブラリ。

+1

Wao、BeautifulSoupは私の予想以上に優れていて、私はそれを愛しています。あなたの助けをありがとう、BSは私が必要なものです。 :-) – junihh

+1

ようこそ。あなたがBeautifulSoupに行くなら、私はあなたの[公式文書](http://beautiful-soup-4.readthedocs.io/en/latest/)を読むことをお勧めします。 –

関連する問題