我正在尝试从vitalsource.com上获取书名和作者的价格。
我成功提取了标题,作者和ISBN信息,但无法从网页上获取价格。
我不明白为什么我无法获取数据,因为它们都在同一网页上。
我用谷歌搜索并尝试了许多小时,现在已经是4:43了,我感到疲惫和绝望,请帮助我。
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)'
}
答案 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'}