3

私はscraperwiki.comでPythonスクレーパーを作成しています。次のコードを含むhtmlページの一部を解析する必要があります。

<div class="div_class">
    <h3>I'm a title. Don't touch me</h3>
    <ul>
        <li>
        I'm a title. Parse me
            <ul>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
            </ul>
        </li>
        <li>
        I'm a title. Parse me
        <ul>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
            </ul>
        </li>
        <li>
        I'm a title. Parse me
        <ul>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
            </ul>
        </li>
        <li>
        I'm a title. Parse me
        <ul>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
                <li>fdfdsfd</li>
            </ul>
        </li>
    </ul>
</div>

「私はタイトルです。解析してください」というタイトルのみを解析したいと思います。これが私がそれをしている方法です:

import scraperwiki
import lxml.html
import re 
import datetime
#.......................
raw_string = lxml.html.fromstring(scraperwiki.scrape(url_to_scrape))
raw_html = raw_string.cssselect("div.div_class ul > li")
for item in ras_html
  print(item.text_content())

私は仕事をします。しかし、それはすべてのデータをキャプチャします。私はそれを望んでいません、私は各ulで「私はタイトルです。私を解析してください」だけを見つけたいです、そしてそれはそれです。

どうすればいいですか?

4

1 に答える 1

4

lxml利点は、cssセレクターとxpathの両方を使用して、ページ上の任意の要素を検索できることです。

あなたの場合、ネストされた<ul>リストがあるので、ナビゲーションにはxpathを使用することをお勧めします。

# find every <li> in the <ul> under div with class div_class
raw_html = raw_string.xpath("//div[@class='div_class']/ul/li")
for item in raw_html:
    print(item.text.strip())

プリント:

I'm a title. Parse me
I'm a title. Parse me
I'm a title. Parse me
I'm a title. Parse me

lxmlでのxpathの簡単な説明は次のとおりです。http://lxml.de/tutorial.html#using-xpath-to-find-text

于 2012-10-25T03:56:43.680 に答える