为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2019-02-18 19:28:36
题目描述 我用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 scrapyimport jsonfrom scrapy.http import Requestfrom scrapy.selector import Selectorfrom 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的路径,谢谢大神了!
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 500 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信