待更新:

建立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 用法总结的更多相关文章

  1. Django and Scrapy 用法图片

  2. Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法

    Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...

  3. Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...

  4. Scrapy爬虫框架第五讲(linux环境)【download middleware用法】

    DOWNLOAD MIDDLEWRE用法详解 通过上面的Scrapy工作架构我们对其功能进行下总结: (1).在Scheduler调度出队列时的Request送给downloader下载前对其进行修改 ...

  5. Scrapy爬虫框架第七讲【ITEM PIPELINE用法】

    ITEM PIPELINE用法详解:  ITEM PIPELINE作用: 清理HTML数据 验证爬取的数据(检查item包含某些字段) 去重(并丢弃)[预防数据去重,真正去重是在url,即请求阶段做] ...

  6. scrapy之基础概念与用法

    scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...

  7. scrapy 中用selector来提取数据的用法

      一. 基本概念 1. Selector是一个可独立使用的模块,我们可以用Selector类来构建一个选择器对象,然后调用它的相关方法如xpaht(), css()等来提取数据,如下 from sc ...

  8. scrapy shell 用法(慢慢更新...)

    scrapy shell 命令 1.scrapy shell url #url指你所需要爬的网址 2.有些网址数据的爬取需要user-agent,scrapy shell中可以直接添加头文件, 第①种 ...

  9. Scrapy框架中选择器的用法【转】

    Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法 请给作者点赞 --> 原文链接 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpa ...

随机推荐

  1. Java学习之String StringBuffer StringBuilder区别

    1.String:对象长度是不可变的,是线程安全. 2.StringBuffer:对象长度是可变的,是线程安全. 3.StringBuilder:对象长度是可变,不是线程安全.

  2. WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对

    WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...

  3. 小博客| 登录 | 注册 | 留言 | 提Bug 小博客

     浏览(1502)  赞(29) 一直以来都想开发一个自己的网站,总想做一个网站然后让千千万万的人去访问,去使用,然后收到热烈的好评, 再然后某某著名机构有意投资我的网站(其实收购也是没有问题的), ...

  4. Spring Boot与Micronaut性能比较

    文章转载出处:微信公众号——锅外的大佬 链接:https://mp.weixin.qq.com/s/MdBByJ0ju-rROKg7jsWygA 今天我们将比较两个在JVM上构建微服务的框架:Spri ...

  5. JSON-RPC 2.0规范 翻译 中文版

    JSON-RPC 2.0规范 起源日期: 2010-03-26(基于2009-05-24的版本号) 修正: 2013-01-04 作者: JSON-RPC 工作组 <json-rpc@googl ...

  6. iOS 内购遇到的坑

    一.内购沙盒测试账号在支付成功后,再次购买相同 ID 的物品,会提示如下内容的弹窗.您以购买过此APP内购项目,此项目将免费恢复 原因: 当使用内购购买过商品后没有把这个交易事件关,所以当我们再次去购 ...

  7. ajax的异步操作及页面重定向跳转

    今天主要分享一个简单的ajax的异步操作数据,用javascript也有一段时间了,刚开始看到一些页面在没有页面刷新的情况下就可以实现数据的保存或者获取,觉得挺不可思议的,感觉速度很快,做了几个项目之 ...

  8. IOS------Warning

    本文转载至 http://blog.csdn.net/shijiucdy/article/details/8755667 处理警告: 1,Validate Project Settings(updat ...

  9. Mysql性能优化笔记

    一,索引 1.Innodb索引使用的是B+树 2.尽量简化where条件,比如不要出现 where id + 3 = 5,这无法使用索引 3.索引很大时,可以冗余一列来模拟哈希索引 4.小的表不需要使 ...

  10. bash shell parameter expansion

    1 ${parameter%word}和${parameter%%word} ${parameter%word},word是一个模式,从parameter这个参数的末尾往前开始匹配.单个%进行最短匹配 ...