これは合法的なlxml
教祖のためのものです。div.content
Webサイト上の多数の(コンテンツはクラスです)タグを反復処理するWebスクレイピングアプリケーションがあります。div.contentタグに入ったら、要素<a>
の子であるタグがあるかどうかを確認したいと思い<h3>
ます。XPath
これは、div.contタグを使用してリストを作成しようとするだけで、比較的簡単に思えます。
linkList = tree.xpath('div[contains(@class,"cont")]//h3//a')
tuple
問題は、 div.contentボックスからのリンクと、同じdiv.contentボックスの段落要素からのテキストを含むを作成したいということです。<a>
明らかに、ドキュメント全体を反復処理して、すべての段落テキストとすべてのリンクを保存することはできますが、適切な段落をタグに一致させる実際の方法はありません。
lxmlのElement.iter()
関数は、すべてのdiv.cont
要素を反復処理し、タグのない要素を無視<a>
し、コンボをペアリングすることでこれを実現できますparagraph/a
が、残念ながら、そのメソッドでクラス名を反復処理するオプションはなく、タグ名のみを反復処理するオプションはないようです。
編集:これが私が解析したいHTMLの非常に簡略化されたバージョンです:
<body>
<div class="cont">
<h1>Random Text</h1>
<p>The text I want to obtain</p>
<h3><a href="somelink">The link I want to obtain</a></h3>
</div>
</body>
私が扱いたいこのようなdiv.contsはたくさんあります-それらのほとんどはこれよりはるかに多くの要素を持っていますが、これは私が何を扱っているかをあなたに理解させるための単なるスケッチです。