无法弄清楚为什么这个xpath选择器不起作用

时间:2017-05-26 23:29:20

标签: python xpath

以下是我正在使用的HTML:

<div class="left-info"> 
    <div itemprop="author" itemscope="" itemtype="http://schema.org/Organization"> 
    <meta content="/store/apps/developer?id=KONAMI" itemprop="url"> 
    <a class="document-subtitle primary" href="/store/apps/developer?id=KONAMI"> 
        <span itemprop="name">KONAMI</span> 
    </a>  
    <a class="document-subtitle category" href="/store/apps/category/GAME_SPORTS"> 
        <span itemprop="genre">Sports</span> 
    </a>  
    </div> 
</div>

我尝试过一堆不同的xpath选择器,但无论出于何种原因,我都无法获取SportsKONAMI值。例如:

//div[@itemprop="author"]//span[contains(@itemprop,"genre")]//text()
//div[@itemprop="author"]//span[contains(@itemprop,"name")]//text()

这为我KONAMI提供了一个空数组,而不是Sports。我无法弄清楚。

我正在使用Scrapy来刮刮Google Play商店。上面示例的网址为https://play.google.com/store/apps/details?id=jp.konami.pesam。这是parse函数:

def parse(self, response):
    yield {
        'utc': datetime.datetime.utcnow(),
        'store': 'itunes',
        'category': response.selector.xpath('//div[@itemprop="author"]//span[contains(@itemprop,"genre")]//text()').extract(),
        'seller': response.selector.xpath('//div[@itemprop="author"]//span[contains(@itemprop,"name")]//text()').extract(),
        'text': response.selector.xpath('//p[@itemprop="description"]/text()').extract()
    }

1 个答案:

答案 0 :(得分:1)

您在浏览器中看到的HTML与Scrapy解析的HTML不完全相同(您应该始终期望这样)。 &#34;类型&#34;位于不同的父母之下,可以直接联系到:

In [1]: response.xpath('//span[@itemprop="genre"]/text()').extract_first()
Out[1]: u'Sports'