开发笔记

Scrapy 初体验

  • scrapy startproject project_name 创建工程

  • scrapy genspider -t basic spider_name website.com 以basic模版创建爬虫

  • ROBOTSTXT_OBEY = False 不遵守Robots协议

  • Item 添加字段

  • 添加pipeline用于Item处理(输出到屏幕/数据/json)

  • 配置pipeline dangdang.pipelines.DangdangPipeline': 300

  • 添加爬取逻辑 : def parse(self, response):

  • scrapy crawl spider_name —nolog 启动爬虫

PyCharm中启动爬虫调试

命令行执行 scrapy crawler spider启动爬虫,其实与下面指令是一样的:

python C:\Python34\Lib\site-packages\scrapy\cmdline.py crawl spider_name

的效果是一样的

这样只需要在pycharm中的Run下Edit Configurations…中做运行配置即可:

Script: C:\Python34\Lib\site-packages\scrapy\cmdline.py

Script parameters: crawl spider_name

XPath

  1. /div[@attr='xxxx'] 选择属性为xxxx的div标签
  2. a/@title.extract() 输出a标签内的title属性值
  3. a/text() 取标签文本
  4. print ("title : " + p.xpath('dl/dd/a/@title').extract())
  5. print("link : " + p.xpath('dl/dd/a/@href').extract())
  6. print("price : " + p.xpath('dl/dd/span/text()').extract()) 取标签文本
  7. print("logo : " + p.xpath('a/img[@onerror="imgerror(event)"]/@src').extract())
  8. print("link : " + p.xpath('dl/dd/a/@href').extract())

趣玩网

创建工程

  1. scrapy startproject quwan
  2. scrapy genspider -t basic QuwanSpider quwan.com
  3. ROBOTSTXT_OBEY = False

首页html分析规律

480x480大方块

  1. brick col2 masonry-brick 专题定位
  2. //div[@class=='brick col2 masonry-brick'] 专题定位
  3. /a/@href 专题详情页link (存在不完整连接)
  4. /a/img[@onerror="imgerror(event)"]/@src 专题头像link

235x235小方块

  1. brick col1 commodity bestlikes masonry-brick 商品定位
  2. //div[@class='brick col1 commodity bestlikes masonry-brick'] 商品定位
  3. /a/@href 商品详情页link (存在不完整连接)
  4. /a/@title 名称
  5. /a/img[@onerror="imgerror(event)"]/@src 商品头像link
  6. /dl/dd/a/@href 商品详情页link (存在不完整连接)
  7. /dl/dd/a/@title 名称
  8. /dl/dd/span.text() 价格

滚动交互区域

brick col1 userActive

一键回顶部

goTop_box

商品详情页分析及提取

  1. 缩略图特效区域
  2. //a[@class="cloud-zoom"]/@href 缩略大图1
  3. //a[@class="cloud-zoom"]/img/@src 缩略大图2
  4. //ul[@class="pic_index"]/li[@class="pic_li"]/img/@src 缩略小图
  5. //div[@id="paykey_new"]//ul/li/dl/dt 品牌
  6. //div[@class="product_mess"] //商品信息
  7. //div[@class="mess_box"] //商品信息
  8. //div[@class="box details"]/p/img/@src 商品图片详情,多图组成
  9. //div[@class="gn_decri"]/p/text() 商品介绍文本

商品Item对象字段定义

  1. class QuwanItem(scrapy.Item):
  2. # define the fields for your item here like:
  3. # name = scrapy.Field()
  4. goods_id = scrapy.Field() #商品id
  5. page_id = scrapy.Field() #商品索引页
  6. logo = scrapy.Field() #商品列表logo
  7. price = scrapy.Field()
  8. title = scrapy.Field()
  9. brand = scrapy.Field() #品牌
  10. pic_zoom_b1 = scrapy.Field() #缩略大图1
  11. pic_zoom_b2 = scrapy.Field() #缩略大图2
  12. pic_zoom_m = scrapy.Field() #缩略小图
  13. pic_des = scrapy.Field() #商品详情图
  14. goods_des = scrapy.Field() #商品文本简介
  15. params_name = scrapy.Field() #参数
  16. params_val = scrapy.Field()

坑爹的item

item.goods_id = "xxxx" 不能这样访问

item['goods_id'] = "xxxx" 非得这样访问

  1. yield item 返回item对象
  2. 安装加工管道逐个处理item
  3. ITEM_PIPELINES = {
  4. 'quwan.pipelines.QuwanPipeline': 300,
  5. }

DB 数据持久化

使用SQLAlchemy教程

页面表

页面id, 商品id

图片表

商品id, 图片顺序号, 图片链接, 图片类型(logo,缩放图,产品详情图)

商品信息表

商品id,价格、名称、参数、赞数量

需要考虑扩展的部分

  • 品牌
  • 好评指数
  • 库存&到货通知
  • 点赞喜欢
  • 放上自己的微信二维码
  • 分享链接可以考虑是否添加上

问题点

  • 首页–详情,产品ID如何匹配?
  • 数据库,手动建库还是对象映射,json?
  • 缩略图特效支持
  • Scrapy 如何多线程

Scrapy 初体验的更多相关文章

  1. Scrapy初体验(一) 环境部署

    系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...

  2. scrapy初体验 - 安装遇到的坑及第一个范例

    scrapy,python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.scrapy用途广泛,可以用于数据挖掘.监测和自动化测试.scrapy的安装稍 ...

  3. scrapy初体验

    1. 构建scrapy项目 scrapy startproject ['项目名'] 在spiders下生成文件 cd spiders scrapy genspider douban_spider [' ...

  4. Scrapy的初体验

    上一节安装了python2和python3的开发环境 首先第一步:进入开发环境,workon article_spider 进入这个环境: 安装Scrapy,在安装的过程中出现了一些错误:通常这些错误 ...

  5. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  6. [转]Python爬虫框架--pyspider初体验

    标签: python爬虫pyspider 2015-09-05 10:57 9752人阅读 评论(0) 收藏 举报  分类: Python(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  7. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  8. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  9. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

随机推荐

  1. TCP实现P2P通信

    Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用.NAT设备允许处于同一NAT后的多台主机共享 ...

  2. --@angularJS--较复杂的指令嵌套demo——综合小实例:登陆界面

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

  3. P2P直播承载平台与CDN直播承载平台比较

    收看软件不一样:CDN直播收看无需安装第三方收看软件,一般操作系统已带播放器软件:P2P直播收看需要安装厂家自己的播放器软件,每家P2P的软件不兼容,收看者要装多套软件才能收看不同内容. 收看人数不一 ...

  4. 【开发必备】今天我们来谈谈Android NDK动态链接库(so文件)的一些见解

    一.写在前面 直到现在,基本我写的每一个项目都会用到NDK动态链接库的知识,可见这个也的确十分常用.那么,今天,咱们就来谈谈它. 二.什么是ABI和so 1.发展 早起的Android系统几乎只支持A ...

  5. MVC 怎么把string字符串转译成html格式

    Views层下:

  6. node源码详解(七) —— 文件异步io、线程池【互斥锁、条件变量、管道、事件对象】

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource7 本博客同步在https://cnodejs.o ...

  7. eclipse中的Java项目导出成为一个可以直接双击运行的jar文件

    1. 选择要到处JAR文件的工程,右键选择“Export” 2. 选择“Java-->Runnable JAR file”,点击“Next”: 3. 在“Launch configuration ...

  8. HTML5 JavaScript API

    W3C官方指定的HTML5规范已经修订了很多次,HTML5这个概念是与javascript API相捆绑的语义标记.在过去这些年中,HTML5这个词所指代的范围正以惊人的的速度膨胀,某种程度上已经成为 ...

  9. IOS隐藏navigationItem左右按钮的方法

    在移除一个View的时候或者根据需要希望让navigationItem的rightBarButtonItem或者leftBarButtonItem处于隐藏状态,一个简单的方法如下:   self.na ...

  10. [CSS3] 学习笔记-CSS3常用操作

    1.对齐操作 使用margin属性进行水平对齐:使用position进行左右对齐:使用float属性进行左右对齐. <!doctype html> <html> <hea ...