转 scrapy系列

随笔分类 - Scrapy

Spider Learning
摘要:Scrapyd部署爬虫项目 github项目 https://github.com/scrapy/scrapyd 官方文档 http://scrapyd.readthedocs.org/ 安装scrapyd http://scrapyd.readthedocs.io/en/stable/instal 阅读全文
posted @ 2018-05-26 17:35 前路~ 编辑
 
摘要:elasticsearch简单集成到scrapy中 使用elasticsearch的python接口处理数据 https://github.com/elastic/elasticsearch-dsl-py elasticsearch-dsl-py官方使用文档 http://elasticsearch 阅读全文
posted @ 2018-05-25 21:09 前路~ 编辑
 
摘要:scrapy-redis分布式爬虫 分布式需要解决的问题 request队列集中管理 去重集中管理 存储管理 分布式需要解决的问题 request队列集中管理 去重集中管理 存储管理 去重集中管理 存储管理 去重集中管理 存储管理 使用scrapy-redis实现分布式爬虫 使用scrapy-red 阅读全文
posted @ 2018-05-24 09:11 前路~ 编辑
 
摘要:开发scrapy扩展 定义 扩展框架提供一个机制,使得你能将自定义功能绑定到Scrapy。 扩展只是正常的类,它们在Scrapy启动时被实例化、初始化 定义 扩展框架提供一个机制,使得你能将自定义功能绑定到Scrapy。 扩展只是正常的类,它们在Scrapy启动时被实例化、初始化 扩展框架提供一个机 阅读全文
posted @ 2018-05-23 16:34 前路~ 编辑
 
摘要:scrapy信号量 定义 Scrapy使用信号来通知事情发生。您可以在您的Scrapy项目中捕捉一些信号(使用 extension)来完成额外的工作或添加额外的功能,扩展Scrapy。 虽然信号提供了一些参数,不过处理函数不用接收所有的参数 - 信号分发机制(singal dispatching m 阅读全文
posted @ 2018-05-23 16:30 前路~ 编辑
 
摘要:Scrapy的数据收集功能 定义 Scrapy提供了方便的收集数据的机制。数据以key/value方式存储,值大多是计数值。 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats 来使用。 特点 无论数据收集(stats collection) 阅读全文
posted @ 2018-05-23 16:29 前路~ 编辑
 
摘要:使用scrapy的telnet功能远程管理scrapy运行 用法 telnet <IP_ADDR> <PORT> 官方文档 官方文档 https://doc.scrapy.org/en/latest/topics/telnetconsole.html 简单使用 crawler the Scrapy 阅读全文
posted @ 2018-05-23 16:26 前路~ 编辑
 
摘要:Scrapy去重原理 scrapy本身自带一个去重中间件 scrapy本身自带一个去重中间件 scrapy源码中可以找到一个dupefilters.py去重器 源码去重算法 # 将返回值放到集合set中,实现去重 def request_fingerprint(request, include_he 阅读全文
posted @ 2018-05-23 16:23 前路~ 编辑
 
摘要:Scrapy爬虫暂停和重启 在当前项目下新建一个用于存储中间过程变量的目录 注意不同的spider不能共用一个目录 同一个spider每次运行时也必须使用新的目录 mkdir <spider_porject_path>/job_process 带参数的命令启动方式 1 scrapy crawl <s 阅读全文
posted @ 2018-05-23 16:22 前路~ 编辑
 
摘要:Selenium浏览器自动化测试框架 简介 简介 Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome 阅读全文
posted @ 2018-05-23 12:39 前路~ 编辑
 
摘要:3种常见的方法 1. 在settings中配置禁用cookies 1 COOKIES_ENABLED = False 2. scrapy限速处理,scrapy为我们提供了扩展模块,它能动态的限制下载速度 # http://scrapy-chs.readthedocs.io/zh_CN/latest/ 阅读全文
posted @ 2018-05-22 16:41 前路~ 编辑
 
摘要:3种实现方案 1. 编码实现 tesseract-ocr 谷歌开源的识别工具,自己实现代码编码,投入精力大,回馈低。且平台验证码更换周期短,编好的代码容易失效 2. 在线打码 在线平台提供,识别率90%以上 http://www.yunzhuan.com/ 3. 人工打码 效率低,准确率高 这里主要 阅读全文
posted @ 2018-05-22 16:38 前路~ 编辑
 
摘要:设置IP代理池及IP变换方案 方案一: 使用国内免费的IP代理 1 http://www.xicidaili.com # 创建一个tools文件夹,新建一个py文件,用于获取代理IP和PORT from scrapy.selector import Selector import MySQLdb i 阅读全文
posted @ 2018-05-22 15:45 前路~ 编辑
 
摘要:随机替换请求头中的User-Agent 基于github开源项目,实现User-Agent的动态切换和管理 基于github开源项目,实现User-Agent的动态切换和管理 1 https://github.com/hellysmile/fake-useragent fake-useragent维 阅读全文
posted @ 2018-05-22 15:39 前路~ 编辑
 
摘要:Selector使用 使用背景 我需要使用类似spider项目中,response使用的xpath和css获取页面指定数据,但因为爬取页面较小我们不想创建一个spider项目时,就可以使用scrapy提供的Selector对象 使用代码 阅读全文
posted @ 2018-05-22 15:35 前路~ 编辑
 
摘要:请求URL流程 Scarpy使用请求和响应对象来抓取网站 通常情况下,请求对象会在spider中生成,并在系统中传递,直到到达downloader,它执行请求并返回一个响应对象,该对象返回发送请求的spider。 请求和响应类都有子类,它们添加了基类中不需要的功能。 Request对象 部分参数解析 阅读全文
posted @ 2018-05-21 21:30 前路~ 编辑
 
摘要:用FromRequest模拟登陆知乎网站 实例 默认登陆成功以后的请求都会带上cookie # -*- coding: utf-8 -*- import re import json import datetime try: import urlparse as parse except: from 阅读全文
posted @ 2018-05-17 21:22 前路~ 编辑
 
摘要:ItemLoader使用 作用 方便管理维护重用xpath或css规则 实例 itemloader+图片处理 # items.py import scrapy from scrapy.loader.processors import MapCompose, Join, TakeFirst from 阅读全文
posted @ 2018-05-17 21:18 前路~ 编辑
 
摘要:使用MySQL数据库存储 安装mysql模块包 pip install mysqlclient 相关库文件 sudo apt-get install libmysqlclient-devel sudo apt-get install python-devel mysql-devel 阻塞型的数据写入 阅读全文
posted @ 2018-05-17 21:16 前路~ 编辑
 
摘要:使用json模块处理JSON数据 class JsonwithEncodingPipeline(object): def __init__(self): self.file = codecs.open('article.json', 'w', encoding='utf-8') def proces 阅读全文
posted @ 2018-05-17 21:13 前路~ 编辑
 
摘要:1. 在项目下创建一个images文件用于存放图片 2. 载图片相关模块 1 pip install pillow 3.修改配置文件,激活pipelines ITEM_PIPELINES = { 'ArticleSpider.pipelines.ArticlespiderPipeline': 300 阅读全文
posted @ 2018-05-17 21:11 前路~ 编辑
 
摘要:items类使用 作用 能使得我们非常方便的操作字段名 在items.py中定制我们的类 class ArticleItem(scrapy.Item): title = scrapy.Field() create_time = scrapy.Field() url = scrapy.Field() 阅读全文
posted @ 2018-05-17 21:06 前路~ 编辑
 
摘要:基于twisted的异步回调 使得页面爬取有阶段性和连续性 阅读全文
posted @ 2018-05-17 21:00 前路~ 编辑
 
摘要:xpath使用 简介 xpath使用路径表达式在xml和html中进行导航 语法 body # 选取所有body元素的所有子节点 /html # 选取根元素 body/a # 选取所有属于body的子元素的a元素 //div # 选取所有dic子元素(任意地方) body//div # 选取所有属于 阅读全文
posted @ 2018-05-17 20:58 前路~ 编辑
 
摘要:基础知识 爬虫发展史 爬虫去重 1. 存储到数据库中 存取速度慢 2. 存储到内存中的集合里,内存占用十分大 当爬取数据有1亿条时 1*10**8*2Byte*50str_len/1024/1024/1024 = 9 结果显示仅仅爬取1亿条url数据就占用了9个G的内存,显然是不合适的 3. 将ur 阅读全文
posted @ 2018-05-17 20:50 前路~ 编辑
原文地址:https://www.cnblogs.com/kenD/p/13124143.html