Scrapy 初体验
开发笔记
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
/div[@attr='xxxx'] 选择属性为xxxx的div标签a/@title.extract() 输出a标签内的title属性值a/text() 取标签文本print ("title : " + p.xpath('dl/dd/a/@title').extract())print("link : " + p.xpath('dl/dd/a/@href').extract())print("price : " + p.xpath('dl/dd/span/text()').extract()) 取标签文本print("logo : " + p.xpath('a/img[@onerror="imgerror(event)"]/@src').extract())print("link : " + p.xpath('dl/dd/a/@href').extract())
趣玩网
创建工程
scrapy startproject quwanscrapy genspider -t basic QuwanSpider quwan.comROBOTSTXT_OBEY = False
首页html分析规律
480x480大方块
brick col2 masonry-brick 专题定位//div[@class=='brick col2 masonry-brick'] 专题定位/a/@href 专题详情页link (存在不完整连接)/a/img[@onerror="imgerror(event)"]/@src 专题头像link
235x235小方块
brick col1 commodity bestlikes masonry-brick 商品定位//div[@class='brick col1 commodity bestlikes masonry-brick'] 商品定位/a/@href 商品详情页link (存在不完整连接)/a/@title 名称/a/img[@onerror="imgerror(event)"]/@src 商品头像link/dl/dd/a/@href 商品详情页link (存在不完整连接)/dl/dd/a/@title 名称/dl/dd/span.text() 价格
滚动交互区域
brick col1 userActive
一键回顶部
goTop_box
商品详情页分析及提取
缩略图特效区域//a[@class="cloud-zoom"]/@href 缩略大图1//a[@class="cloud-zoom"]/img/@src 缩略大图2//ul[@class="pic_index"]/li[@class="pic_li"]/img/@src 缩略小图//div[@id="paykey_new"]//ul/li/dl/dt 品牌//div[@class="product_mess"] //商品信息//div[@class="mess_box"] //商品信息//div[@class="box details"]/p/img/@src 商品图片详情,多图组成//div[@class="gn_decri"]/p/text() 商品介绍文本
商品Item对象字段定义
class QuwanItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()goods_id = scrapy.Field() #商品idpage_id = scrapy.Field() #商品索引页logo = scrapy.Field() #商品列表logoprice = scrapy.Field()title = scrapy.Field()brand = scrapy.Field() #品牌pic_zoom_b1 = scrapy.Field() #缩略大图1pic_zoom_b2 = scrapy.Field() #缩略大图2pic_zoom_m = scrapy.Field() #缩略小图pic_des = scrapy.Field() #商品详情图goods_des = scrapy.Field() #商品文本简介params_name = scrapy.Field() #参数params_val = scrapy.Field()
坑爹的item
item.goods_id = "xxxx" 不能这样访问
item['goods_id'] = "xxxx" 非得这样访问
yield item 返回item对象安装加工管道逐个处理itemITEM_PIPELINES = {'quwan.pipelines.QuwanPipeline': 300,}
DB 数据持久化
页面表
页面id, 商品id
图片表
商品id, 图片顺序号, 图片链接, 图片类型(logo,缩放图,产品详情图)
商品信息表
商品id,价格、名称、参数、赞数量
需要考虑扩展的部分
- 品牌
- 好评指数
- 库存&到货通知
- 点赞喜欢
- 放上自己的微信二维码
- 分享链接可以考虑是否添加上
问题点
- 首页–详情,产品ID如何匹配?
- 数据库,手动建库还是对象映射,json?
- 缩略图特效支持
- Scrapy 如何多线程
Scrapy 初体验的更多相关文章
- Scrapy初体验(一) 环境部署
系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...
- scrapy初体验 - 安装遇到的坑及第一个范例
scrapy,python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.scrapy用途广泛,可以用于数据挖掘.监测和自动化测试.scrapy的安装稍 ...
- scrapy初体验
1. 构建scrapy项目 scrapy startproject ['项目名'] 在spiders下生成文件 cd spiders scrapy genspider douban_spider [' ...
- Scrapy的初体验
上一节安装了python2和python3的开发环境 首先第一步:进入开发环境,workon article_spider 进入这个环境: 安装Scrapy,在安装的过程中出现了一些错误:通常这些错误 ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- [转]Python爬虫框架--pyspider初体验
标签: python爬虫pyspider 2015-09-05 10:57 9752人阅读 评论(0) 收藏 举报 分类: Python(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
随机推荐
- git 配置SSH免密
1.安装TortoiseGit(比较简单,直接在官网上下载安装包安装) 2.打开下图标识 点击 generate按钮 生成key(需要等一会) 3.生成Key保存成.ppk文件,记得存放路径,(建 ...
- java如何获取本机IP
java如何获取本机IP import java.net.*; public class Test6 { public static void main(String[] args) { // TOD ...
- java程序的工作原理
Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行.为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac ...
- Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...
- 本地ssh连接到vbox中的linux
本机是window xp系统, 安装vbox,在vbox下安装linux,想在xp中用ssh连接linux,此时需要配置网络. 1.设置vbox的网络,选择host-only 2.设置window虚拟 ...
- HDU4734(数位dp)
F(x) Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Codeforce 712A Memory and Crow
A. Memory and Crow time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...
- getstyle() 获取样式
问题:在js动画中,如果元素设置了border,padding等,获取到的样式是盒子的样式,这样会影响动画的正常显示. 解决方案一:在元素的行内添加样式 如 <div style=" ...
- C++编程练习(13)----“排序算法 之 堆排序“
堆排序 堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(也叫最大堆):或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(也叫最小堆). 最小堆和最大堆如 ...
- WAS缓存导致的修改文件不生效问题【转】
WAS缓存导致的修改文件不生效问题: 解决方法: 一. 修改web.xml文件,需要修改以下三个目录下的文件: 1. /opt/IBM/WebSphere/AppServer/profiles/Dmg ...