网页爬虫 - 用Scrapy爬取网页元素返回空,但元素实际存在的
本文介绍了网页爬虫 - 用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屋!
查看全文