猿问

Scrapy爬取豆瓣电影详情页问题

题目描述

我用Scrapy框架想要爬取豆瓣中一些电影的上映日期或者导演等信息,发现不同电影的上映日期或者导演的信息的Xpath路径是不一样的,
https://movie.douban.com/subj... 这部电影的上映日期的Xpath是//*[@id="info"]/span[10],
https://movie.douban.com/subj... 这部电影的上映日期的Xpath是//*[@id="info"]/span[9],
两者的Span路径的数字不一样,造成爬取到的信息有的有,有的没有。
想请教一下大神,除了Xpath的语法,有什么其他的语法可以解决这个问题呢?
谢谢大神!

相关代码

import scrapy
import json
from scrapy.http import Request
from scrapy.selector import Selector
from MovieSpider.items import MoviespiderItem

class MovieSpider(scrapy.Spider):

name = "MovieSpider"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%86%B7%E9%97%A8%E4%BD%B3%E7%89%87&sort=rank&page_limit=20&page_start=0"]

def parse(self, response):
    list = json.loads(response.text)
    urls = list['subjects']
    for url in urls:
        src = url['url']
        yield Request(src, callback=self.parse_detail)

def parse_detail(self, response):
    sel = Selector(response)
    item = MoviespiderItem()
    item['title'] = sel.xpath('//*[@id="content"]/h1/span[1]/text()').extract_first()
    item['score'] = sel.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()').extract_first()
    item['year'] = sel.xpath('//*[@id="info"]/span[10]/text()').extract_first()
    item['author'] = sel.xpath('// *[ @ id = "info"]/span[1]/span[2]/a/text()').extract_first()
    yield item

主要问题在于Xpath的路径,谢谢大神了!

蛊毒传说
浏览 502回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答