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 控制反转)和 ...
随机推荐
- B-JUI 实践 之 带搜索与编辑的Datagrid
使用B-JUI 1.31版本 DataGrid 页直接上代码: <div class="bjui-pageHeader" style="background-col ...
- Android中的AutoCompleteTextView的使用
最终的效果如下: main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- doubango(5)--SIP协议栈传输层的启动
SIP协议的INVITE消息发起流程 当通过sip协议发起一个会话时,需要通过invite消息实现该流程.而SIP协议是一个基于事务的协议,每一个sip会话的都是通过sip部件间的一系列消息来完成的. ...
- 如何使用DockerHub官方的mysql镜像
Mysql是一个广泛使用的开源关系型数据库. 如何获取Mysql Docker镜像? docker pull mysql:5.7 如何使用这个Docker镜像? 1.启动一个Mysql Server容 ...
- asp.net权限认证:摘要认证(digest authentication)
asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...
- [译] 关于 Git 你需要知道的一些事情
分支和合并 Git 跟其他版本控制系统最大的优势就在于其高级的分支模型. Git 允许而且 鼓励 你在本地使用多个完全独立的分支.这些分支的创建,合并和删除几乎都可以在几秒内完成. 这意味着你可以轻松 ...
- TCP协议详解
TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: · ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. · ◆ 当TCP发出一个报文段后 ...
- 【问题解决】使用自定义控件时,vs停止工作
问题表现:向页面中添加自定义控件时,vs卡住了,随便点击一下,然后窗口未响应,然后用资源管理器看到内存使用在飙升,监视进程会发现就是vs的进程出现了异常 问题的解决:菜鸟D在网上搜了一下,发现一个奇葩 ...
- Noip 2014酱油记+简要题解
好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...
- python2.7读汉字的时候出现乱码,如何解决
我使用的是window系统,安装Anaconda,所以用的是. 1.数据形式 2.读进来乱码 3.解决办法 3.1方法1 import pandas as pd #pd.read_csv('c:/us ...