以下是我正在使用的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选择器,但无论出于何种原因,我都无法获取Sports
和KONAMI
值。例如:
//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()
}
答案 0 :(得分:1)
您在浏览器中看到的HTML与Scrapy
解析的HTML不完全相同(您应该始终期望这样)。 &#34;类型&#34;位于不同的父母之下,可以直接联系到:
In [1]: response.xpath('//span[@itemprop="genre"]/text()').extract_first()
Out[1]: u'Sports'