网页爬虫 - 用Scrapy爬取网页元素返回空,但元素实际存在的

查看:742
本文介绍了网页爬虫 - 用Scrapy爬取网页元素返回空,但元素实际存在的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在使用Scrapy爬汽车之家网站的车型数据时,进入车型详情页面(比如http://www.autohome.com.cn/692/),一直就爬取不到详细车型列表数据(在<div class=tab-content-item current">里面),返回的数据一直为空。截图说明如下:

但是我用源码方式查看网页是有这个元素的,不知道是不是汽车之家做了什么反爬虫处理,或者这部分html是事后加载的?

附上我的Scrapy源码,供大家参考:

def parse_model(self, response):
    model = response.meta['item']

    # 定位到车型列表,爬取一级车型,如2.0升 涡轮增压 190马力
    # 这里就已经爬取不到页面元素了(返回空)
    for sel in response.xpath('//div[class="tab-content-item current"]/div[id="speclist20"]/div[class="interval01-title"]'):
        model['type'] = sel.xpath('div[class="interval01-list-cars"/span/text()]').extract()[0]
        
        # 继续向下爬取二级车型,如2017款 40 TFSI 进取型
        for subsel in sel.xpath('following-sibling::li'):
            model['subtype'] = subsel.xpath('div[class="interval01-list-cars"]/div/p/a/text()').extract()[0]
            print model

解决方案

看清楚 xpath 路径

'//*[@id="speclist20"]' #  在售  sel
'//*[@id="speclist20"]/div[1]/div[1]/span' # 2.0升 涡轮增压 190马力
'//*[@id="spec_27436"]/a' # 2017款 40 TFSI 进取型

这篇关于网页爬虫 - 用Scrapy爬取网页元素返回空,但元素实际存在的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆