非关系型数据库存储 NoSQL 全称 Not Only SQL 意为非SQL 泛指非关系型数据库.基于键值对 不需要经过SQL层解析 数据之间没有耦合性 性能非常高. 非关系型数据库可细分如下: 键值存储数据库: 代表有Redis.Voldemort.和Oracle BDB等. 列存储数据库:代表有Cassandra.HBase.和Riak等. 文档型数据库:代表有CouchDB.Mongodb等. 图形数据库:代表有Neo4J.InfoGrid.Infinite.Graph等. 对于爬虫的数据…
一.Ajax数据爬取 1. 简介:Ajax 全称Asynchronous JavaScript and XML 异步的Javascript和XML. 它不是一门编程语言,而是利用JavaScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据,获得数据后,再利用JavaScript改变页面. 示例:新浪微博 热门 2. 基本原理 2.1 发送请求 JavaScript可以实现页面交互功能 Ajax也不例外 它是由JavaScript实现的,实际上执行了如下代码 var xmlhtt…
关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表保存的,所以它的存储方式就是行列组成的表.每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系,就需要表与表之间的关联关系来体现.例如 主键和外键的关联关系,多个表组成一个数据库,也就是关系型数据库. 关系型数据库有很多种.如SQLite.MySQL.Oracle.SQL Server.DB2等. 1.MySQL的存储 在python2中,连接MySQL的库大多是使用MySQLdb,但是此库的…
数据存储 用解析器解析出数据之后,就是存储数据了.保存的形式可以多种多样,最简单的形式是直接保存为文本文件,如TXT JSON CSV等.另外还可以保存到数据库中,如关系型数据库MySQL 非关系型数据库MongoDB Redis等 一.文件存储 1.TXT文本存储 将数据保存到TXT文本的操作非常简单,而且TXT文本几乎兼容任何平台,缺点是不利于检索.所以针对检索和数据结构要求不高,追求方便第一的话,可以采用TXT文本存储. 1.1 目标保存知乎上 “发现” 页面 的 “热门话题”部分,提取标…
NoSQL,全称Not Only SQL,意为不仅仅是SQL,泛指非关系型数据库.NoSQL是基于键值对的,而且不需要经过SQL层的解析,数据之间没有耦合性,性能非常高. 非关系型数据库又可细分如下. 键值存储数据库:代表有Redis.Voldemort和Oracle BDB等. 列存储数据库:代表有Cassandra.HBase和Riak等. 文档型数据库:代表有CouchDB和MongoDB等. 图形数据库:代表有Neo4J.InfoGrid和Infinite Graph等. 对于爬虫的数据…
3.CSV文件存储 CSV 全称 Comma-Separated Values 中文叫做逗号分隔值或者字符分隔值,文件以纯文本形式存储表格数据.文件是一个字符序列 可以由任意数目的记录组成相当于一个结构化表的纯文本形式,它比Excel更加简洁,XLS文本是电子表格,包含文本,数值,公式和格式等内容,CSV都没有 就是特定的字符分隔纯文本,结构简单清晰. 3.1 写入 示例: import csv with open('data.csv','w') as csvfile: writer = csv…
一.爬虫数据解析的流程 1.指定url 2.基于requests模块发起请求 3.获取响应中的数据 4.数据解析 5.进行持久化存储 二.解析方法 (1)正则解析 (2)bs4解析 (3)xpath解析 1. 正则解析 常用正则表达式 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w \s :所有的空白字符包,括空格.制表符.换页符等等.等价于 [ \f\n…
一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用来爬取同样的目标站点而被封禁或者代理服务器突然故障或者网络繁忙 一旦选用了一个不可用的代理,这势必会影响爬虫的工作效率 1.准备工作 需要安装Redis数据库并启动服务 另外还需要安装aiohttp.requests.redis-py.pyquery.flask库 redis数据库安装 下载地址 h…
二.pyspider框架的使用 简介 pyspider是由国人binux 编写的强大的网络爬虫系统 github地址 : https://github.com/binux/pyspider 官方文档 http://docs.pyspider.org/ pyspider 带有强大的WebUI 脚本编辑器 任务监控器 项目管理器 以及结果处理器 支持多种数据库后端 多种消息队列 JavaScript渲染页面的爬取 使用起来非常方便 1.基本功能 提供可视化编写和调试爬虫爬虫项目管理能力支持多种后端数…
一.分布式爬虫 前面我们了解Scrapy爬虫框架的基本用法 这些框架都是在同一台主机运行的 爬取效率有限 如果多台主机协同爬取 爬取效率必然成倍增长这就是分布式爬虫的优势 1. 分布式爬虫基本原理 1.1 分布式爬虫架构 Scrapy 单机爬虫中有一个本地爬取队列Queue 这个队列是利用 deque 模块实现的 如果新的 Request 生成就会放在队列里面 随后 Request被Scheduler调度 之后 Request 交给 Downloader 执行爬取 简单的调度架构如图 单主机爬虫…