2016-10-20 58 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作爲起點。就像文件目錄引用一樣。

希望這可以幫助別人。