好久没有写爬虫了,有点生疏;今天来练练手复习一下。
抓取网址:
这是一个幼儿产品官网,里面罗列这家公司的产品和价格:
到了具体价格页,分了很多层级:
首先是大类
其次是小类
最后才是产品以及价格
调试抓取:
提取大类:
输出结果:
不完整网址的列表,可以用join方法。
进入小类界面:
重置shell,提取小类:
输出结果:
还是一个不完整网址的列表。
进入价格页面:
重置shell,提取产品:
审查元素:
产品名称还是在center标签之下,直接将链接href改为文本text()。
提取价格:
所有center - b标签 - span标签下的文本。
输出结果:
验证产品和价格数量:
别忘记目录提取:
但是这个目录明显不对,审查元素之后发现其他的div之中也有a标签,所以咱们取出第二个标签下的所有文本,这里需要用到xpath的string(.)功能:
爬虫代码
启动scrapy项目:
定义爬虫类:
第一级网址:
for的最后有个extract():太长不截图了。
第二级网址:
详情页提取:
type的写法太长,单独拿出来:
types = response.xpath('//div[@class="breadcrumbs"]//div[2]').
xpath('string(.)').extract()
运行爬虫:
运行结果:
我们发现价格总是在产品的下面一个位置,为什么?因为抓取网页的时候,xpath分别提取了2次center标签。
审查元素:
清理数据
导入模块:
读取数据:
path是我自己baby文件路径。
价格上移一位:
删除原始价格:
取出产品不为空的行:
删除重复数据
导出数据:
查看结果:
验证价格:
准确……
自己动手试试吧!
关于框架的细节,请见以往的文章:
赶集网-深入抓取
天天基金--抓取
597人才网 -- 抓取
手机网段信息抓取
领取专属 10元无门槛券
私享最新 技术干货