scrapy爬取当当网图书畅销榜
一、采集任务
爬取当当网图书畅销榜信息,获取热销图书前500相关数据。
二、网页解析
1、 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1],按住shift+Ctrl+I调出chrome浏览器的开发者工具,逐层找到每一个商品的代码,分析商品代码
(图片丢了嘤嘤嘤,不过不影响观看)
2、 分析后确定爬取“图书名称(bname)”、“购买链接(burl)”、“评论数目(bcomment)”、“推荐度(btuijian)”、“出版时间(btime)”、“折后价(bprice)”、“折扣(bdiscount)”这七项信息。
3、根据HTML源码构造XPATH语句。
3.1图书名称
代码结构:
<div class="name"><a href="http://product.dangdang.com/25259300.html" target="_blank" title="流浪的地球(刘慈欣著,无删节无改写,大人孩子均可阅读,此版本当当网销量遥遥领先!根据本书改编的同名电影2019春节上映。)">流浪的地球(刘慈欣著,无删节无改写,大人孩子均可阅读,此版本<span class='dot'>...</span></a></div>
分析代码结构后,发现可以从class=“name”的div下取文本,也可以从a标签中取title属性,本次爬取选择了后者,得出的
xpath路径为:
"//div[@class='name']/a/@title"
3.2购买链接
代码结构:在上面的图书名称代码中包含了购买链接,所以购买链接是提取相同路径下的不同属性,得出
xpath路径为:
"//div[@class='name']/a/@href"
3.3评论数目
代码结构:
<div class="star"><span class="level"><span style="width: 92%;"></span></span><a href="http://product.dangdang.com/25259300.html?point=comment_point" target="_blank">121374条评论</a><span class="tuijian">100%推荐</span></div>
可以看出评论人数在class="star"的div下的a标签的文本中,得出
xpath路径为:
"//div[@class='star']/a/text()"
同样地,可以得出其他需要获取的信息的xpath路径
"//span[@class='tuijian']/text()"#推荐度
"//div[@class='publisher_info']/span/text()"#出版时间
"//span[@class='price_n']/text()"#折后价
"//span[@class='price_s']/text()"#折扣
三、scrapy爬虫项目
1、新建项目及文件
在cmd中进入目标文件夹,输入命令语句建立新的scrapy爬虫项目
scrapy startproject dangdang
在pycharm中打开dangdang项目
新建一个爬虫文件
scrapy genspider -t basic dd dangdang.com
生成的文件结构:
2、编写代码
2.1首先在items文件中定义所要爬取的数据
items.py代码:
# -*- coding: utf-8 -*-
# Define here the models for you