待更新:

建立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. Page Design for Sexable Forum

    Design Demo 1. Home of Sexable Forum 1.1  home page not logined. 1,2 home page logined. 2. Pages wit ...

  2. java内部类的一些看法

    java内部类, 我在看<thinking in java>的时候总感觉模棱两可的, 挣扎了好几天之后, 感觉有一部分的问题想的清楚了, 写一个随笔记录一下, 以备以后修改和查看 什么是内 ...

  3. Mysql 数据库中间件

    读写分离:简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力.主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作.当主数据库 ...

  4. UICollectionViewController xcode6.1 自定义Cell

    本文转载至 http://blog.csdn.net/daleiwang/article/details/40423219 UICollectionViewContAutolayoutstoryboa ...

  5. String,StringBuilder与StringBuffer的区别

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...

  6. Hadoop提供的reduce函数中Iterable 接口只能遍历一次的问题

    今天在写MapReduce中的reduce函数时,碰到个问题,特此记录一下: void reduce(key, Iterable<*>values,...) { for(* v:value ...

  7. 设置Android Studio工程布局文件的默认布局

    每次创建新的工程后,布局文件的的布局总是ConstraintLayout,如何更改? 进入Android Studio安装目录,用文本编辑器打开文件plugins\android\lib\templa ...

  8. 正则工具类以及FinalClass

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/27811103 完整版见https://jadyer. ...

  9. h5 getUserMedia error PermissionDeniedError

    HTML5 在使用非 localhost 地址访问时打开摄像头失败 .报getUserMedia error PermissionDeniedError,火狐下是可以正常调取的. 需要https: 火 ...

  10. PHP获取类名及所有函数名

    PHP获取当前类名.方法名  __CLASS__ 获取当前类名  __FUNCTION__ 当前函数名(confirm)  __METHOD__ 当前方法名 (bankcard::confirm) _ ...