つまり/<tag[^>]*>.*?<\/tag>/
、正規表現を使用tag
して、ネストされた要素を含まない html 要素に一致させることができますtag
か?
例 (lt.html):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>greater than sign in attribute value</title>
</head>
<body>
<div>1</div>
<div title=">">2</div>
</body>
</html>
正規表現:
$ perl -nE"say $1 if m~<div[^>]*>(.*?)</div>~" lt.html
そしてスクリーンスクレーパー:
#!/usr/bin/env python
import sys
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(sys.stdin)
for div in soup.findAll('div'):
print div.string
$ python lt.py <lt.html
どちらも同じ出力が得られます。
1
">2
期待される出力:
1
2
w3c言います:
属性値は、テキストにあいまいなアンパサンドを含めることができないという追加の制限を除いて、テキスト参照と文字参照の混合です。