2016-10-20 27 views
0

我试图用scrapy抓取www.tvtropes.org,例如:限制scrapy来解析单一标签

Belle - TV Tropes

我调用外壳尝试刮,使用上述网页,然后通过选择具有属性itemprop =“articleBody”的div标签来获取页面的相关部分。这一切工作正常。

scrapy shell "http://tvtropes.org/pmwiki/pmwiki.php/Film/Belle" 
itembody = response.xpath('//div[@itemprop="articleBody"]') 

我想然后提取该标记中的所有单个列表项,即为该影片列出的列表的列表。我想我可以做到这一点:

itembody.xpath('//li') 

然而,这给了我一个巨大的“礼”标签,包括很多来自其他地方的网页,其中都没有,我选择了“DIV”标签内的列表。如果我想将其限制在该标签我不得不再次重新状态的识别标准如下:

itembody.xpath('//div[@itemprop="articleBody"]//li') 

我能做到这一点的解决办法,但我认为itembody将仅包含标签,而不是页面的其余部分让我感到困惑。任何人都可以向我解释这个吗?

在此先感谢。

回答

0

试试这个XPath:

//div[@itemprop='articleBody']/ul/li 

以 '/' 你是 “第一子女” 的元素的元素。

使用'//'您可以获得儿童的子元素。

1

好的,我答应我在问这个问题之前搜索和搜索过,但当然,我在发布后5分钟找到了答案。

我需要使后续的xpath成为一个相对的,而不是绝对的引用ie。

itembody.xpath('.//li') 

'。'在xpath的开头将其设置为仅在当前项目中查看,而以“/”开头则指定root作为起点。就像文件目录引用一样。

希望这可以帮助别人。