0

私はScrapyを使用していて、変数を使用するとよい場所がいくつかありますが、その方法がわかりません。つまり、長い文字列がある場合は、それを変数に格納してからlong_string選択すると便利ですhxs.select('\\div[@id=long_string]')。これはScrapyでサポートされていると確信していますが、文字列を常にハードコーディングする必要があるとは限らないため、理解できません。

更新:以下のサンプルテキストでは、divを抽出したいと思いますid="footer"

<div id="footer">
    <div id="footer-menu">
        <div class="region-footer-menu">
            <div id="block-menu-menu-footer-menu" class="block-menu">
                <div class="content">
                    <ul class="menu">
                        <li class="first leaf"><a href="/faq" title="">FAQs</a></li>
                        <li class="leaf"><a href="/media" title="">Media</a></li>
                        <li class="leaf"><a href="/partners" title="">Partners</a></li>
                        <li class="last leaf active-trail"><a href="/jobs" title="" class="active-trail active">Jobs</a></li>
                    </ul>
                </div>
            </div>
            <div id="block-block-52" class="block block-block">
                <div class="content">
                    <p>SUPPORT</p>
                </div>
            </div>
        </div>
    </div>
</div>

hxs = HtmlXPathSelector(response)以下のすべてのセグメントに対して初期化します。次のコードは、最初のdivのみを選択します。 hxs.select('//div[@id=concat("foot","er")]')

このコードは何も選択しませんが、エラーは発生しません。 hxs.select('//div[@id="foot"+"er"]')

以下のコードセグメントはどちらも何も選択せず、エラーも発生しません。

long_string = "foot"
hxs.select('//div[@id=concat(long_string,"er")]')
hxs.select('//div[@id=long_string]')

下の2つの方法のいずれかを実行して、目的の結果を返すことができるようにしたいと思います。

4

2 に答える 2

1

+がScrapyの文字列連結で機能すると仮定すると、これは機能するはずです。

hxs.select('//div[@id="' + long_string + '"]')

私はScrapyに精通していませんが、存在しないdivを選択できるとは思いません。

于 2013-01-08T16:25:46.473 に答える
0

やってみました?

hxs.select('\\div[@id="' + long_string_variable + '"]')
于 2013-01-03T13:10:11.387 に答える