scrapy 用法总结
待更新:
建立python开发虚拟环境 virtualenv mkvirtualenv --python=the-path-to-the-python-you-want-to use
安装:
使用pip install scrapy就可以了,然后自动安装成功
新建scapy项目:
进入需要新建项目的路径
然后 进入虚拟环境 workon virtualenv-name或者进入到虚拟环境下的目录,然后用activate
然后 scrapy startproject project-name 就可以了
然后用pycharm打开该项目,这个时候scrapy项目是空的
进入到项目文件夹下
然后 scarpy genspider name url
进入pycharm右键同步
可以为该项目添加虚拟环境的解释器,到时候可以一起打包(待验证)
sys.path.append()
os.path.dirname()
os.path.abspath(__file__)
from scrapy.cmdline import execute execute(['scrapy','crawl','name'])
设置settings.py里面的24行 ROBOTSTXT_OBEY = FALSE
基本的调试,断点,
xpath的基本语法
从chrome审查中直接获取节点的xpath路径,右键即可,可以点击审查的元素找页面中的元素,也可以反着来
scarpy 快速调试 : scrapy shell url
extract()[0] 和 extract_first()的区别: 前者如果是空列表,会报错,应该是range错误把,后者可以简化异常处理,
xpath 选择器, css选择器
item, 如何定义自己的item,如何给item中的属性赋值,如何进行传递,如何存入数据库
pipeline 添加自己定义pipeline, pipeline里面定义的pipeline类会默认处理所有的item,这个在后面的设置中也要注意
setting中设置pipeline的执行顺序
利用item.loader进行选择和赋值 from scrapy.loader import ItemLoader , add_css(),add_value(),这里返回的都是list
item定义中field中的参数: from scrapy.loader.processors import MapCompose,TakeFirst
input_processor = MapComose(self_define_function) 这里可以连续调用多个对属性的处理函数,这里处理的是list中的每个值
TakeFirst : output_processor = TakeFirst() 这样就只取list中的第一个元素了
不用为每个字段都加:
可以自己继承一个ItemLoader类,然后将 default_output_processor 设置成 TakeFirst(),之后在自己的爬取逻辑中使用自己的类即可
用于下载图片的字段,图片的url只能是list,这个要注意,可以直接覆盖out_processor即可,同时要注意的是 在存入数据库的时候字段类型问题
同样提过了一个 Join, 可以将list中的内容进行连接 Join(",")
代码重用:为具有相同操作的字段写一个共同的处理函数,然后通过 input_processor 进行设置, 比如说同样的正则表达式匹配和同样的转整数的操作
终端调试: scrapy shell url
ipython 安装 pip install ipython
出现了问题,就卸载再装吧(反正成功了,但是还是不知道问题在哪,无语)
scrapy 用法总结的更多相关文章
- Django and Scrapy 用法图片
- Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法
Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...
- Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...
- Scrapy爬虫框架第五讲(linux环境)【download middleware用法】
DOWNLOAD MIDDLEWRE用法详解 通过上面的Scrapy工作架构我们对其功能进行下总结: (1).在Scheduler调度出队列时的Request送给downloader下载前对其进行修改 ...
- Scrapy爬虫框架第七讲【ITEM PIPELINE用法】
ITEM PIPELINE用法详解: ITEM PIPELINE作用: 清理HTML数据 验证爬取的数据(检查item包含某些字段) 去重(并丢弃)[预防数据去重,真正去重是在url,即请求阶段做] ...
- scrapy之基础概念与用法
scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...
- scrapy 中用selector来提取数据的用法
一. 基本概念 1. Selector是一个可独立使用的模块,我们可以用Selector类来构建一个选择器对象,然后调用它的相关方法如xpaht(), css()等来提取数据,如下 from sc ...
- scrapy shell 用法(慢慢更新...)
scrapy shell 命令 1.scrapy shell url #url指你所需要爬的网址 2.有些网址数据的爬取需要user-agent,scrapy shell中可以直接添加头文件, 第①种 ...
- Scrapy框架中选择器的用法【转】
Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法 请给作者点赞 --> 原文链接 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpa ...
随机推荐
- 【转载】TCP的三次握手(建立连接)和四次挥手(关闭连接)
建立连接: 理解:窗口和滑动窗口TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 接收方发送的确认信息中包 ...
- 运营或生态链没做好,APP质量再高有个鸟用(下)
上篇文章已经阐述了对于一款产品卖不卖作,事实上非常依赖于运营的打造和生态链的建立,这里能够解释为什么很多优秀的游戏产品功底非常好,但開始并不卖作,仅仅有碰到一家肯出力推的渠道游戏才迅速火了起来.这是不 ...
- mysql语法、特殊符号及正則表達式的使用
http://blog.csdn.net/pipisorry/article/details/46773545 sql语言 结构化的查询语言.(Structured Query Language),是 ...
- 程序设计之另一种读写函数---writev,readv
read()和write()系统调用每次在文件和进程的地址空间之间传送一块连续的数据.但是,应用有时也需要将分散在内存多处地方的数据连续写到文件中,或者反之.在这种情况下,如果要从文件中读一片连续的数 ...
- sqlldr的用法
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法: 1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中2. 建立数据库间的 ...
- opencv IplImage各参数详细介绍以及如何从一个JPEG图像数据指针转换得到IplImage
这篇文章里介绍得最清楚了.http://blog.chinaunix.net/uid-22682903-id-1771421.html 关于颜色空间 RGB颜色空间已经非常熟悉了.HSV颜色空间需要 ...
- HDU 5627Clarke and MST
Clarke and MST Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- vue中如何实现后台管理系统的权限控制
vuejs单页应用的权限管理实践 一.前言 在广告机项目中,角色的权限管理是卡了挺久的一个难点.首先我们确定的权限控制分为两大部分,其中根据粒的大小分的更细: 接口访问的权限控制 页面的权限控制 菜单 ...
- bzoj3134: [Baltic2013]numbers
稍微用脑子想一想,要是一个回文数,要么s[i]==s[i+1]要么s[i]==s[i+2]就可以实锤了 所以多开两维表示最近两位选的是什么数就完了 注意前导0 #include<cstdio&g ...
- hdu 5615 Jam's math problem(十字相乘判定)
d. Jam有道数学题想向你请教一下,他刚刚学会因式分解比如说,x^2+6x+5=(x+1)(x+5) 就好像形如 ax^2+bx+c => pqx^2+(qk+mp)x+km=(px+k)(q ...