Python网络爬虫Scrapy框架研究

Scrapy1.0教程

Wiki

Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。 Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类, 如BaseSpider、sitemap爬虫等,还有对web2.0爬虫的支持。

Scrach是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。

基于最新的Scrapy 1.0编写,已更新至Python3.6


对多个内容网站的采集,主要功能实现如下:

  • 最新文章列表的爬取

  • 采集的数据放入MySQL数据库中,并且包含标题,发布日期,文章来源,链接地址等等信息

  • URL去重复,程序保证对于同一个链接不会爬取两次

  • 防止封IP策略,如果抓取太频繁了,就被被封IP,目前采用三种策略保证不会被封:

    • 策略1:设置download_delay下载延迟,数字设置为5秒,越大越安全
    • 策略2:禁止Cookie,某些网站会通过Cookie识别用户身份,禁用后使得服务器无法识别爬虫轨迹
    • 策略3:使用user agent池。也就是每次发送的时候随机从池中选择不一样的浏览器头信息,防止暴露爬虫身份
    • 策略4:使用IP池,这个需要大量的IP资源,貌似还达不到这个要求
    • 策略5:分布式爬取,这个是针对大型爬虫系统的,对目前而言我们还用不到。
  • 模拟登录后的爬取

  • 针对RSS源的爬取

  • 对于每个新的爬取目标网站,或者原来的网站格式有变动的时候,需要做到可配置, 只修改配置文件即可,而不是修改源文件,增加一段爬虫代码,主要是用xpath配置爬取规则

  • 定时爬取,设置定时任务周期性爬取

  • 与微信公共平台的结合,给大量的订阅号随机分配最新的订阅文章。

  • 利用scrapy-splash执行页面javascript后的内容爬取

Scrapy框架详解的更多相关文章

  1. 网络爬虫之scrapy框架详解

    twisted介绍 Twisted是用Python实现的基于事件驱动的网络引擎框架,scrapy正是依赖于twisted, 它是基于事件循环的异步非阻塞网络框架,可以实现爬虫的并发. twisted是 ...

  2. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  3. mina框架详解

     转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...

  4. lombok+slf4j+logback SLF4J和Logback日志框架详解

    maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...

  5. [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解

    Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...

  6. iOS 开发之照片框架详解(2)

    一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...

  7. Quartz.NET作业调度框架详解

    Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html

  8. mapreduce框架详解

    hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...

  9. iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)

    本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...

随机推荐

  1. 10.1 csp-s模拟测试(b) X国的军队+排列组合+回文

    T1 X国的军队 贪心,按$b-a$的大小降序排序,然后就贪心吧 #include<iostream> #include<cstdio> #include<algorit ...

  2. Unity Profiler 记录

    版本 Unity 2018.4.6f1 空包 development build 魅蓝 note3 OPPO R9 VIVO x9 华为 P8 青春版 小米 8 SE iphone se Other ...

  3. PHP常用数字函数以及排序函数

    一:数字函数 .ceil() 进一取整 示例:ceil(0.9) 结果为1 .abs() 绝对值 示例:abs(-1) 结果为1 .rand() 随机数 示例:rand(1. 100) 1到100 以 ...

  4. 爬虫——爬取Ajax动态加载网页

    常见的反爬机制及处理方式 1.Headers反爬虫 :Cookie.Referer.User-Agent 解决方案: 通过F12获取headers,传给requests.get()方法 2.IP限制 ...

  5. 【shell脚本】显示进度条

    使用动态时针版本显示进度条 [root@VM_0_10_centos shellScript]# cat progressBar.sh #!/bin/bash # 进度条,动态时针版本 # 定义显示进 ...

  6. 【Linux命令】ulimit设置最大文件打开数

    一.简介 在Linux下有时会遇到Socket/File : Can't open so many files的问题.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默 ...

  7. XML与DataTable相互转换

    1.DataTable转XML #region DataTableToXml /// <summary> /// 将DataTable对象转换成XML字符串 /// </summar ...

  8. ASP.NET web.config 配置里部分参数详细说明

    Session配置 <!-- <identity impersonate = "false" [true|false] userName = "" ...

  9. 服务器部署Laravel

    安装lnmp环境 参考:简书 - Centos 7 下安装LNMP官方最新版 安装redis 参考:简书 - Centos 7下使用yum安装redis 安装nodejs npm nodejs分8.x ...

  10. C#动态创建单例类的对象

    单例类 public class SnappingClass : ISnappingEnvironment, IExtension { // private static readonly Snapp ...