ローカルのhtmlファイルから生のhtmlを取得しようとしています。私はで読むために、生のファイルを取得するには、この記事からいくつかの助けがあった:Pythonのローカルファイルから特定のXPath内の生のすべての生のhtmlを取得する方法
Get all text inside a tag lxml
しかし、私が持っているコードは、現在のサブセットの代わりに、ファイル全体を生成します。今私は私がつかまえたいと思うxpathを選ぶことができるラインを欠いているようです。私の最終目標は、それだけでdiv要素としてローカルファイルに文字列を出力にそれを得ることができるようにすることです
def stringify_children(node):
from lxml.etree import tostring
from itertools import chain
parts = ([node.text] +
list(chain(*([c.text, tostring(c), c.tail] for c
in node.getchildren()))) +
[node.tail])
# filter removes possible Nones in texts and tails
return ''.join(filter(None, parts))
for filename in os.listdir('../news/article/'):
if (filename.endswith('.html') and not filename.startswith('._')):
print filename;
with open('../news/article/' + filename, "r") as f:
page=f.read();
tree=html.fromstring(page);
maincontent = stringify_children(tree);
print maincontent;
:ここ
は、私が現在持っているコードです。
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-4">
<div class="left-bar"></div>
</div>
<div class="col-xs-4">
<div class="middle-bar"></div>
</div>
<div class="col-xs-4">
<div class="right-bar"></div>
</div>
</div>
<div class="row">
<div class="col-xs-3">
<div class="navigation"></div>
</div>
<div class="col-xs-9">
<div class="main-content">
Hello
<br>
<br><a href="http://www.stackexchange.com">Click here to visit stack exchange</a>
<h1>This is an introduction</h1>
<h3>This is the third header</h3>
<p>Lorem ipsum dolor sit amet.....</p>
<p>Lorem ipsum dolor sit amet.....</p>
<p>Lorem ipsum dolor sit amet.....</p>
<ul>
<li>list text</li>
<li>list text</li>
<li>list text</li>
<li>list text</li>
</ul>
<div class="row">
<div class="col-xs-4"><img src="#">More content 1</div>
<div class="col-xs-4"><img src="#">More content 2</div>
<div class="col-xs-4"><img src="#">More content 3</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
私はMainContentのクラスの下にコンテンツのすべてをつかむしたい:ここ
は、サンプルファイルです。ここでは、そのクラスのXPathがこのファイルにあります。
のXPath:/ HTML /ボディ/ DIV/DIV [2]/DIV [2]/divの
プログラムでは、出力は次の必要があります。
Hello
<br>
<br><a href="http://www.stackexchange.com">Click here to visit stack exchange</a>
<h1>This is an introduction</h1>
<h3>This is the third header</h3>
<p>Lorem ipsum dolor sit amet.....</p>
<p>Lorem ipsum dolor sit amet.....</p>
<p>Lorem ipsum dolor sit amet.....</p>
<ul>
<li>list text</li>
<li>list text</li>
<li>list text</li>
<li>list text</li>
</ul>
<div class="row">
<div class="col-xs-4"><img src="#">More content 1</div>
<div class="col-xs-4"><img src="#">More content 2</div>
<div class="col-xs-4"><img src="#">More content 3</div>
</div>
ですから、div要素自体をしたくないですか?それはあなたに壊れたHTMLを与えるでしょうあなたはそれをしたいですか? –
はい。すでにタグが作成されている新しいhtmlドキュメントにデータをインポートするため、私は確信しています。 –