回答編集履歴
1
テキスト修正
answer
CHANGED
@@ -46,4 +46,44 @@
|
|
46
46
|
$
|
47
47
|
|
48
48
|
|
49
|
-
以上参考になれば幸いです。
|
49
|
+
以上参考になれば幸いです。
|
50
|
+
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
**追記**
|
55
|
+
|
56
|
+
蛇足ですが、[lxml](https://lxml.de/) のHTMLパーサー [lxml.html](https://lxml.de/lxmlhtml.html)を使うと、XPath でテキストノードを持ってこれるので、以下のように手短に書けます。
|
57
|
+
|
58
|
+
```python
|
59
|
+
import lxml.html
|
60
|
+
|
61
|
+
src = '''
|
62
|
+
<!DOCTYPE html>
|
63
|
+
<html>
|
64
|
+
<head>
|
65
|
+
<meta charset="utf-8">
|
66
|
+
<title>太字テスト</title>
|
67
|
+
<link rel="stylesheet" href="stylesheet.css">
|
68
|
+
</head>
|
69
|
+
<body>
|
70
|
+
<div class="normal">これは普通の文章です。</div>
|
71
|
+
<div class="ep">この文章は強調の文章です!</div>
|
72
|
+
<div class="normal">これは<span class="ep2">この部分が!</span>強調の文章です。</div>
|
73
|
+
</body>
|
74
|
+
</html>
|
75
|
+
'''
|
76
|
+
|
77
|
+
|
78
|
+
root = lxml.html.fromstring(src)
|
79
|
+
|
80
|
+
for text in root.xpath('//text()'):
|
81
|
+
if '!' in text:
|
82
|
+
elm = text.getparent()
|
83
|
+
print(elm.tag + "/" + str(elm.attrib) + "/" + text)
|
84
|
+
```
|
85
|
+
|
86
|
+
上記を実行すると以下が表示されます。
|
87
|
+
|
88
|
+
> div/{'class': 'ep'}/この文章は強調の文章です!
|
89
|
+
span/{'class': 'ep2'}/この部分が!
|