在webmagic的多线程抓取中有一个比较麻烦的问题:当Scheduler拿不到url的 时候,不能立即退出,需要等到没抓完的线程都运行完毕,没有新url产生时,才能退出.之前使用Thread.sleep来实现,当拿不到url 时,sleep一段时间再取,确定没有线程执行之后,再退出. 但是这种方式始终不够优雅.Java里面有wait/notify机制可以解决这种同步的问题.于是webmagic 0.4.0用wait/notify机制代替了之前的Thread.sleep机制.代码如下: whil…
//url加密与解密string res1 = HttpUtility.UrlEncode("7Z2K5Lgk/iI="); //值是7Z2K5Lgk%2fiI%3d string res2 = HttpUtility.UrlEncode(res1); //值是: 7Z2K5Lgk%252fiI%253d string res3 = HttpUtility.UrlDecode(res2); //值是7Z2K5Lgk%2fiI%3d string res4 = HttpUtility.U…
原文:http://blog.csdn.net/zxl315/article/details/10879927 介绍Quartz Quartz是一个开源的任务调度系统,它能用来调度很多任务的执行. 运行环境 Quartz 能嵌入在其他应用程序里运行. Quartz 能在一个应用服务器里被实例化(或servlet容器), 并且参与XA事务 Quartz能独立运行(通过JVM),或者通过RMI Quartz能被集群实例化 任务调度 当一个指定给任务的触发器发生时,任务就被调度执行. 触发器能被创建为…
本文链接:http://blog.csdn.net/u012150179/article/details/38091411 一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redis实际上就是scrapy+redis当中对redis的操作採用redis-pyclient.这里的redis的作用以及在scrapy-redis的方向我在自己fork的repository(链接:https://github.com/younghz/scrapy-redis)已经做了翻译(READM…
摘要 webmagic 学习 从头 刚刚开始学,很多东西可能理解错了,还请各位指教 一些基本类: Request:包含要爬行的url和一些附加信息,是Page的一个成员变量 主要成员变量 String  url Map<String, Object>  extras 存储附加信息 long  priority  优先级 值越大越优先 主要方法 Request(String url) { this.url = url; }构造函数 Request  setPriority(long  prior…
scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重规则(被调度器使用) pipeline   - 数据持久化 scrapy-redis组件 1. URL去重 定义去重规则(被调度器调用并应用) a. 内部会使用以下配置进行连接Redis # REDIS_HOST = 'localhost' # 主机名 # REDIS_PORT = 6379 # 端…
前端和框架 1.谈谈你对http协议的认识 浏览器本质,socket客户端遵循Http协议 HTTP协议本质:通过\r\n分割的规范,请求响应之后断开链接 ==> 短连接.无状态 具体: Http协议是建立在tcp/ip之上的,是一种规范,它规范定了发送的数据的数据格式, 然而这个数据格式是通过\r\n进行分割的,请求头与请求体也是通过2个\r\n分割的,响应的时候, 响应头与响应体也是通过\r\n分割,并且还规定已请求已响应就会断开链接,即-->短连接.无状态 2.谈谈你对websocket…
配置文件 基本配置 #1.项目名称,默认的USER_AGENT由它来构成,也作为日志记录的日志名 BOT_NAME = 'Amazon' #2.爬虫应用路径 SPIDER_MODULES = ['Amazon.spiders'] NEWSPIDER_MODULE = 'Amazon.spiders' #3.客户端User-Agent请求头 #USER_AGENT = 'Amazon (+http://www.yourdomain.com)' #4.是否遵循爬虫协议 # Obey robots.t…
我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory 来使用Quartz的.StdSchedulerFactory 会加载属性配置文件并实例化一个Scheduler. 默认情况下,Quartz会加载classpath下的”quartz.properties”文件作为配置属性,如果找不到则会使用quartz框架自己jar下org/quartz包底下的”quartz.properties”文件.当然你也可以指定”org.qu…
第一部分 Python基础篇 1:为什么学习Python 家里有在这个IT圈子里面,也想让我接触这个圈子,然后给我建议学的Python, 然后自己通过百度和向有学过Python的同学了解了Python,Python这门语言,入门比较简单, 它简单易学,生态圈比较强大,涉及的地方比较多,特别是在人工智能,和数据分析这方面.在未来我觉得是往自动化, 人工智能这方面发展的,所以学习了Python 2:通过什么途径学习Python 刚开始接触Python的时候,到网上里面跟着视频学基础,再后来网上到看技…