0

我正在使用 Scrapy,并且遇到了一些使用变量会很好的地方,但我不知道如何使用。这意味着如果我有一些长字符串,最好将它存储在一个变量中long_string,然后为它选择:hxs.select('\\div[@id=long_string]')。我确信 Scrapy 支持这一点,但我无法弄清楚,因为你总是必须硬编码字符串是没有意义的。

更新:所以对于下面的示例文本,我想提取 div where 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]')

我希望能够执行下面两种方法中的任何一种并返回所需的结果。

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 回答