在Scrapy殼爲http://www.apkmirror.com/apk/airbnb-inc/airbnb/的元件的某些類的元素,我試圖提取對應於製作的Airbnb應用程序的不同版本的鏈接:CSS/Xpath的選擇器,用於用含有某些文本
由於使用Chrome的檢查看到,這個元素的結構是:
與類的listWidget
的孩子包含我想要提取的鏈接。所以,我想先選擇「帶有類listWidget
的元素,其中包含一個包含文本」所有版本「的元素。」
到目前爲止,我想出了
In [4]: response.css('.listWidget').xpath('.//*[contains(text(), "All versions")]').extract()
Out[4]: [u'<div class="widgetHeader">All versions </div>']
然而,這個選擇變爲「太遠」:我想選擇listWidget
包含此元素,而不是元素本身。我該如何做到這一點?
這似乎做什麼,我問:在我的Scrapy殼,如果我嘗試'response.xpath( '.// DIV [DIV [文本()= 「所有版本」]]')提取物() '',我得到'[''
如果你想匹配'appRow',你可能需要嘗試'.//div[div[text()="All versions「]]/following-sibling :: div [@ class =」appRow「]' – Andersson
Yes ,我最終使用了這種方法,並使用CSS選擇器代替Xpath選擇器來選擇遵循Scrapy推薦實踐的類(https://doc.scrapy.org/zh/latest/topics/selectors.html#when-querying-by )使用CSS的-class-考慮 - 。我用來獲得三個鏈接的最後一個表達式是'response.xpath('.//* [* [contains(text(),「All versions」)]]/following-sibling :: *')。css(' .appRow ')。CSS('。downloadLink ')。的xpath(' .//@ HREF')。提取物()'。 –