无法在Scrapy

时间:2016-10-09 02:45:28

标签: xpath scrapy scrapy-spider

我正在抓取此网址https://www.amazon.co.uk/dp/073532963X,并且它有//*[@id="ddmDeliveryMessage"]个XPath元素。 (请选择澳大利亚作为送货地址)

该元素具有这样的HTML

<div id="ddmDeliveryMessage" class="a-section a-spacing-mini"> <span class="a-text-bold">Estimated delivery</span> 18 Oct.4 Nov. when you choose <span class="a-text-bold">Standard Delivery</span> at checkout. <a href="">Details</a> </div>

我尝试了//*[@id="ddmDeliveryMessage"]/text(),但它给出了空结果

我已尝试//*[@id="ddmDeliveryMessage"]//text()它也会提供空结果

还尝试Selector(response).css('div[id=ddmDeliveryMessage]::text').extract()[0],但提供空响应。

有人可以告诉我一个选择器来获取ddmDeliveryMessage DIV中的所有文字吗?

注:

//*[@id="ddmDeliveryMessage"]为我提供了完整的HTML。

3 个答案:

答案 0 :(得分:0)

当我通过Scrapy Shell提出 User-Agent标题的请求时,..//text()选项实际上对我有用:

$ scrapy shell https://www.amazon.co.uk/dp/073532963X -s USER_AGENT='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
In [1]: ' '.join(item.strip() for item in response.xpath('//*[@id="ddmDeliveryMessage"]//text()').extract()).strip()
Out[1]: u'Estimated delivery 18 Oct.\xa0-\xa04 Nov. when you choose Standard Delivery at checkout. Details'

答案 1 :(得分:0)

我最终获得了HTML,然后使用RegEx剥离HTML标签。

other processes

答案 2 :(得分:0)

在这种情况下,正确的XPATH是//*[@id="ddmDeliveryMessage"]/span/text()