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

新手上路,请多包涵

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

clipboard.png

但是我用源码方式查看网页是有这个元素的,不知道是不是汽车之家做了什么反爬虫处理,或者这部分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
阅读 8.5k
1 个回答

看清楚 xpath 路径

'//*[@id="speclist20"]' #  在售  sel
'//*[@id="speclist20"]/div[1]/div[1]/span' # 2.0升 涡轮增压 190马力
'//*[@id="spec_27436"]/a' # 2017款 40 TFSI 进取型
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进