Scrapy xpath无法正常工作,返回空数据

时间:2019-05-26 20:51:03

标签: python parsing xpath scrapy

我正在尝试从vitalsource.com上获取书名和作者的价格。

我成功提取了标题,作者和ISBN信息,但无法从网页上获取价格。

我不明白为什么我无法获取数据,因为它们都在同一网页上。

我用谷歌搜索并尝试了许多小时,现在已经是4:43了,我感到疲惫和绝望,请帮助我。

please check the image for more detail. The xpath is working fine in the blue area, but not working in the red area

import scrapy
from VitalSource.items import VitalsourceItem
from scrapy.spiders import SitemapSpider

class VsSpider(scrapy.Spider):
    name = 'VS'
    allowed_domains = ['VitalSource.com']
    start_urls = ['https://www.vitalsource.com/products/cengage-unlimited-1st-edition-instant-access-1-cengage-unlimited-v9780357700006']

    def parse(self, response):
        item = VitalsourceItem()
        item['Ebook_Title'] = response.xpath('//*[@id="content"]/div[1]/div[1]/div[1]/div/div[2]/h1/text()').extract()[1].strip()
        item['Ebook_Author'] = response.xpath('//*[@id="content"]/div[1]/div[1]/div[1]/div/div[2]/p/text()').extract()[0].strip()
        item['Ebook_ISBN'] = response.xpath('//*[@id="content"]/div[1]/div[1]/div[1]/div/div[2]/ul/li[2]/h2/text()').extract()[0].strip()
        item['Ebook_Price'] = response.xpath('//*[@id="content"]/div[1]/div[1]/div[1]/div/div[2]/div/span[1]/span[3]/span[2]/text()')
        print(item)
        return item

结果信息:

{
 'Ebook_Author': 'by: Cengage Unlimited',
 'Ebook_ISBN': 'Print ISBN: \n 9780357700037, 0357700031',
 'Ebook_Price': [],
 'Ebook_Title': 'Cengage Unlimited, 1st Edition [Instant Access], 1 term (4 months)'
}

1 个答案:

答案 0 :(得分:1)

我不确定您是否要严格使用xpath,但是我将发布xpath和CSS选择器的用法:

css:

response.css('.u-pull-sixth--right+ span::text').get().strip()

xpath:

response.xpath('/html[1]/body[1]/div[2]/main[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/span[1]').xpath('//span[@class]//span[2]/text()').get().strip()

结果:

{'Ebook_Price': '119.99'}