最近想买两本程序设计的书籍,也就在当当网上面看了下,发现真是太多的书了。所以想着利用爬虫知识爬取下程序设计相关书籍的一些信息。
00_1. 首先是今天所用到的东西
  python 3.5 + scrapy 1.5
00_2.scrapy的相关简单命令
I. 创建爬虫项目之前

# 通过view指令可以下载指定网站,并用默认浏览器打开scrapy view http://www.baidu.com
# 通过version可以查看scrapy的版本scrapy version
# 通过 startproject创建一个新的项目scrapy startproject myproject
# 利用bench 可以创建服务器以最大速度去爬去网页,从而得到爬取的最大速度scrapy bench

II. 进入爬虫项目之后,会出现新的命令

# 利用genspider创建爬虫文件。(这里是利用模板创建爬虫文件)
# 一个爬虫项目可以有多个爬虫文件
# 利用 -l 列出这里的模板列表scrapy genspider -lAvailable templates:basiccrawlcsvfeedxmlfeed# 利用basic 创建爬虫文件scrapy genspider -t basic weisuen baidu.com
# 利用check来测试爬虫文件是否可以scrapy check weisuen Ran 0 contracts in 0.000s
OK# 利用 crawl 可以运行爬虫
# 使用--nolog可以控制是否输出日志信息,主要用于看程序是否出现问题scrapy crawl weisuen --nolog
# 利用list显示可以使用的爬虫文件scrapy list

01.网页分析
基础网页: http://category.dangdang.com/pg2-cp01.54.06.00.00.00.html
 01_1.提取信息分析   
  右键,检查网页源代码,分别复制我们关心的书籍的信息,在网页源码中检索下,观察我们需要的信息是否能直接从源码中获取。
  可以发现我们想获取的书名价格评论数链接 均为加密,也就是说在网站源码中可以直接获取,这样我们可以直接通过Xpath方法获得即可。(这里也可以使用正则或者其他方法,根据自己喜欢,因为前面博文中已经用正则完成过,这里选择用Xpath完成)

这里是对应的Xpath式子,可能不是最简洁的,大家可以根据自己能力修改

it["title"] = response.xpath("//p[@class='name']/a[@name='itemlist-title']/text()").extract()
it["Comment_Num"] = response.xpath("//p[@class='search_star_line']/a/text()").extract()
it["price"] = response.xpath("//p[@class='price']/span[@class='search_now_price']/text()").extract()
it["link"] = response.xpath("//p[@class='name']/a[@name='itemlist-title']/@href").extract()

 01_2.网页网址分析
   我们想分析当当网计算机-程序设计目录下的所有图书,就要遍历所有页面(这里大概有一百页),可以复制每一页的网址观察规律,以便构造网址。

第二页:http://category.dangdang.com/pg2-cp01.54.06.00.00.00.html
第三页:http://category.dangdang.com/pg3-cp01.54.06.00.00.00.html
第四页:http://category.dangdang.com/pg4-cp01.54.06.00.00.00.html

  很明显,这里pa代表了页面后面的数字代表了页码。

 02.代码书写
 其实完成了分析阶段,代码的书写阶段就比较简单了。关于scrapy,主要是items、pipelines、和自己创建的爬虫文件部分的书写。关于新建的爬虫文件的书写,这里新建是以basic模板为例。

# -*- coding: utf-8 -*-
import scrapy
from DangDang.items import DangdangItem
from scrapy.http import Request
class DangdSpider(scrapy.Spider):name = 'DangD'allowed_domains = ['dangdang.com']start_urls = ['http://www.dangdang.com/']def parse(self, response):it = DangdangItem()it["title"] = response.xpath("//p[@class='name']/a[@name='itemlist-title']/text()").extract()it["Comment_Num"] = response.xpath("//p[@class='search_star_line']/a/text()").extract()it["price"] = response.xpath("//p[@class='price']/span[@class='search_now_price']/text()").extract()it["link"] = response.xpath("//p[@class='name']/a[@name='itemlist-title']/@href").extract()yield itfor page in range(2, 51):url = 'http://category.dangdang.com/pg{}-cp01.54.06.00.00.00.html'.format(page)yield Request(url, callback=self.parse)break

Ps.具体工程中在pipelines中添加了输出到数据库的内容,根据自己对数据库的了解更改。
  具体完整工程见Github(点击链接),欢迎大家指正相关问题,这也是第一次自助运用scrapy。的确发现scrapy很强大,很简洁,方便大型爬虫项目的书写。

[Python]scrapy爬取当当网书籍相关信息相关推荐

  1. python爬虫爬取当当网的商品信息

    python爬虫爬取当当网的商品信息 一.环境搭建 二.简介 三.当当网网页分析 1.分析网页的url规律 2.解析网页html页面 书籍商品html页面解析 其他商品html页面解析 四.代码实现 ...

  2. Scrapy爬取当当网的商品信息存到MySQL数据库

    Scrapy爬取当当网的商品信息存到MySQL数据库 Scrapy 是一款十分强大的爬虫框架,能够快速简单地爬取网页,存到你想要的位置.经过两天的摸索,终于搞定了一个小任务,将当当网的商品信息爬下来存 ...

  3. python爬虫-爬取当当网书籍信息存到Excel中

    文章目录 一.任务 二.分析 (一).单页面的信息分析 源代码分析 目标信息定位与分析 代码设计 (二).所有目标页面链接分析 目标链接分析 代码设计 三.注意要点 四.完整代码 五.参考 一.任务 ...

  4. Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息

    XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...

  5. python实战|用scrapy爬取当当网数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...

  6. 在当当买了python怎么下载源代码-python爬虫爬取当当网

    [实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...

  7. Scrapy爬取当当网图书销售前100

    scrapy爬取当当网图书畅销榜 一.采集任务 爬取当当网图书畅销榜信息,获取热销图书前500相关数据. 二.网页解析 1. 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http: ...

  8. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  9. Scarpy爬取当当网书籍

    目录 1:Scarpy (1)  Scrapy是什么: (2)安装scrapy: 2.scrapy项目的创建以及运行 1.创建scrapy项目: 2.项目组成: 3.创建爬虫文件 4.爬虫文件的基本组 ...

最新文章

  1. 无乱码的中文Joomla 1.0.15
  2. ROUTEROS基本命令
  3. ExecutorService对象的shutdown()和shutdownNow()的区别
  4. [xmlpull]XmlPull常见错误
  5. scheme解释器 C语言实现,使用Scala写了个简单的Scheme解释器
  6. Redmine 126邮件服务器的配置
  7. [python]一个遍历多层文件夹,然后替换文件内容和目录名称的案例
  8. python--综合小案例--文件读取以及梳理
  9. hibernate教程笔记4
  10. 获取完整拼音中包含拼音的个数
  11. 信息安全制度(用户篇)
  12. android开发下载网络图片到相册工具类适配Q及以上
  13. Nginx转发Tcp、Udp详细教程(简单粗暴)
  14. 大数据产品推荐:Stratifyd大数据智能分析平台
  15. k8s安装prometheus+grafana(第二弹:prometheus-operator)
  16. html头像生成器,Personas – 免费的卡通风格头像生成器
  17. session保存和清除cookies
  18. matlab绘制布尔运算图,最强干货——PPT布尔运算最全攻略
  19. 网易被裁后,68天吃透这份阿里学长甩我的Android面试笔记,竟让我收到字节跳动和小米offer
  20. C#/VB.NET 在Excel单元格中应用多种字体格式

热门文章

  1. Python 日期类型字符判断
  2. MAVEN项目打包编译日志乱码
  3. MATLAB 线性拟合 决定系数R2求解
  4. linux - 查看/修改文件的修改时间
  5. html怎么做模糊条纹,CSS秘密花园:条纹背景
  6. 双线性池化(Bilinear Pooling)
  7. 测试Istio 1.6 Service Mesh引入虚拟机Workload (笔记与感悟)
  8. 谈加薪,真不是涨点钱那么简单
  9. 如何查看cpu是否支持sse指令级
  10. java面试官看到这些面试答案只会点头:过了过了,明天直接上班