Scrapy-刮除隐藏元素

时间:2019-01-24 21:42:42

标签: xpath scrapy css-selectors

我认为我想问的是是否可以绕开sql:hide(https://docs.microsoft.com/en-us/sql/relational-databases/sqlxml-annotated-xsd-schemas-using/hiding-elements-and-attributes-by-using-sql-hide?view=sql-server-2017),但是如果我弄错了,我在下面描述了我的实际问题:

我正在尝试从具有类似以下内容的DOM的网站中抓取“ foo”网址:

<html>
    <body>
        <tbody>
            <tr>
                <a href="foo1">...</a>
                <a href="foo2">...</a>
            </tr>
        </tbody>
        <table>
            <tbody>
                <tr>
                    <a href="bar1">...</a>
                </tr>
                <tr>
                    <a href="bar2">...</a>
                </tr>
            </tbody>
        </table>
    </body>
</html>

每当我尝试print(response.css('a'))或等效地print(response.xpath('//a'))时,都可以看到“ foo”网址,但看不到“ bar”网址。另外,使用XPath我可以访问该表,但是print(response.xpath('//table//*'))print(response.xpath('//table//a'))都输出[]

是否可能以某种方式对Scrapy隐藏了表格的元素?一个人怎么解决呢?

先谢谢了。这主要是出于兴趣,因为网址无论如何都具有可预测的模式。

1 个答案:

答案 0 :(得分:0)

我知道这只是一个疯狂的猜测,但是您可以尝试

//a[starts-with(@href,'foo')]/text()

这应该为您提供所有具有a属性的href标签的文本值,该属性值以字符串'foo'开头。


但是有可能稍后在JavaScript中加载XML / HTML结果的某些部分,这将解释您查找某些元素时遇到的困难。