2017-03-08 9 views
0

私はタグ間のすべてのテキストを見つけることが任されています。beautifulsoupを使わずにPythonでファイル内にタグを見つける

import urllib.request 
import urllib.parse 
import re 

file = open("file.txt", "r") 
s = file.read() 
file.close() 

file.encode('utf-8') 

files = re.findall(r'<a href="(.*?)">(.*?)</a>', str(file)) 

if files: 
    for link, title in files: 
    print (title) 

マイtxtファイルが完全にHTML有効でないHTMLが含まれています

は、ここに私のコードです。しかし、htmlの妥当性は重要ではありません。私はファイルを変更することはできません。

出力はスパン要素に当たるまで動作し、生の文字列を出力します。

+0

'bs'でどのパーサーを使用しましたか?デフォルトのパーサーは部分的に有効なHTMLをうまく扱えません。 'BeautifulSoup(" file.txt "、" html5lib ")'を試してください。正規表現でHTMLを解析することは悪い考えです。 – DyZ

+0

@DYZ私は美容スープを使用できません。私はそれを使用することが許可されていません。 –

+1

彼は間違っている教師に教えてください:http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not。そしてあなたの 'str(ファイル)'は本当に 's'でなければなりません。 – DyZ

答えて

0

"タグ間のすべてのテキスト"を検索すると、タグは気にしません。そうしないでください。

正規表現ゲームをプレイするのではなく、「<」と「>」に分割します。

parts = [text_tag.split('<')[0] for text_tag in text.split('>')] 

print('\n'.join(parts)) 
+0

動作しません:ほとんどのブラウザは '<<'を '<<'と表示し、OPは彼のHTMLが有効ではないと言います。 – DyZ

関連する問題