Scrapy-Redis分布式爬虫常规操作
一、X-path 的常规用法
1、/是从根节点选取,有顺序
2、//从当前节点选择文档中的节点,无顺序
3、.选取当前节点
4、..选取当前节点的父节点
5、@选取属性
6、 //div[@class='doclist']/a
选择class属性为doclist的div标签下的所有a的标签。
a[1]是选择第一个,a[last()]是选择最后一个。
a[possition()<=3]是选择前3个a标签
7、//ul[@class= "b_listul"]/li[2]/following-sibling::ul[1]
选择ul/li[2]标签的同级第一个ul标签;
preceding-silbling::li[1]是选择ul标签之前的。
8、//book/title | //book/price
选取book标签下咋所有title和price标签。
9、//div[@class = 'doclist']/a/text()
选择a标签的文本内容。
a/@href是选择a标签的href属性内容。
10、string(//ul[@class = "b_listul"])
取//ul[@class = "b_listul"]标签下的所有文本内容。
----------------------------------------------------------------------
二、redis的相关命令
1、keys aa*
查看所有的以aa开始的redis_key
2、flushdb
清空redis数据库,即清空所有的redis_key
3、redis 中存在两种数据格式 (key 指向的value是一个集合list/set)
(1)、list集合,value是以list集合存在,特点是有序,可以重复
如 lpush name age 将name作为key, age作为value存入list集合中的最左边(即list中第一位)
rpush name age 将name作为key, age作为value存入list集合中的最右边(即list中最后一位)
如 lrange name 0 10 查看key=name 指向的value集合中,下标从第0位-第10位(前10个)元素中,key=name 的value值
没有rrange
如 llen key_name 查看key_name中value存在的个数
(2)、set集合,value是以set集合存在特点是有序,去重
如 sadd name age ,将name作为key, age作为value存入set集合中
如 scard key_name 查看key_name中value存在的个数
4、del key_name
删除某个key,对应的value也会被删除
5、rename old_key_name new_key_name
重新命名key_name
----------------------------------------------------------------------
三、MongoDB常用命令(这里要看个人的习惯,平时采集到的数据我都放在了MongoDB里)
1、show collections
查看所有的集合(表)
2、db.tb_name.findOne()
查看tb_name表中的一条数据
3、db.tb_name.find().pretty().limit(100)
查看100条数据,并美化输出结果
4、db.tb_name.find({'doctor_name':'叶定伟'})
查看医生姓名为叶定伟的所有数据
5、db.tb_name.count()
查看tb_name表的数据量
6、db.tb_name.drop()
删除tb_name表
7、db.tb_name.remove({consult_time:/天/})
删除tb_name表中,字段consult_time中包括"天"的数据(这里是模糊匹配)
8、db.tb_name.find().
forEach(function(x){
db.new_tb.insert(x);
})
将tb_name表中的数据备份到new_tb表中
9、db.table_name.update({}, {$rename:{"旧键名称":"新键名称"}}, false, true)
参数提醒:
第一个false表示:"如果不存在update的记录";(可以换成)true为插入新的记录,默认是false,不插入。
第二个true表示:mongodb默认是false,只更新找到的第一天记录;如果这个参数是true,就把按条件查出来的多条记录全部更新
10、db.旧表名.renameCollection('新表名')
修改表名称
----------------------------------------------------------------------
四、小结
1、strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
2、.extract 返回一个list(就是系统自带的那个) 里面是一些你提取的内容
Scrapy-Redis分布式爬虫常规操作的更多相关文章
- 16 Scrapy之分布式爬虫
redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
- scrapy补充-分布式爬虫
spiders 介绍:在项目中是创建爬虫程序的py文件 #1.Spiders是由一系列类(定义了一个网址或一组网址将被爬取)组成,具体包括如何执行爬取任务并且如何从页面中提取结构化的数据. #2.换句 ...
- Scrapy 框架 分布式 爬虫
分布式 爬虫 scrapy-redis 实现 原生scrapy 无法实现 分布式 调度器和管道无法被分布式机群共享 环境安装 - pip install scrapy_redis 导包:from sc ...
- scrapy简单分布式爬虫
经过一段时间的折腾,终于整明白scrapy分布式是怎么个搞法了,特记录一点心得. 虽然scrapy能做的事情很多,但是要做到大规模的分布式应用则捉襟见肘.有能人改变了scrapy的队列调度,将起始的网 ...
- scrapy进行分布式爬虫
今天,参照崔庆才老师的爬虫实战课程,实践了一下分布式爬虫,并没有之前想象的那么神秘,其实非常的简单,相信你看过这篇文章后,不出一小时,便可以动手完成一个分布式爬虫! 1.分布式爬虫原理 首先我们来看一 ...
- 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 爬虫--scrapy+redis分布式爬取58同城北京全站租房数据
作业需求: 1.基于Spider或者CrawlSpider进行租房信息的爬取 2.本机搭建分布式环境对租房信息进行爬取 3.搭建多台机器的分布式环境,多台机器同时进行租房数据爬取 建议:用Pychar ...
- 基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL
为了学习机器学习深度学习和文本挖掘方面的知识,需要获取一定的数据,新浪微博的大量数据可以作为此次研究历程的对象 一.环境准备 python 2.7 scrapy框架的部署(可以查看上一篇博客的简 ...
随机推荐
- AWS MVC 详解
由于新工作是在AWS PaaS平台上进行开发,为不耽误工作,先整理一下AWS MVS的使用规范,快速上手.对AWS PaaS平台的相关介绍留到以后再来补充.本文几乎是对官方学习文档的整理,有遗漏的后补 ...
- java数组和集合的相互转换
由于在学习过程中经常碰到这么一个问题,就是java中几种装数据的容器之间的转换,所以写了这篇随笔专门来总结这些转换方法. 数组转集合: 1.遍历,最常用的方法,但是过程会繁琐一点 int arrs[] ...
- Jenkins(Docker容器内)使用宿主机的docker命令
1.Jenkins镜像 Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/ ...
- Zookeeper+Dubbo+SpringMVC环境搭建
项目码云GIT地址:https://gitee.com/xshuai/dubbo/ 开发工具 MyEclipse 10.7 JDK 1.7 容器 Tomcat 8(运行dubbo) zookeeper ...
- Spring使用支付宝扫码支付
前一段一直在研究支付宝的扫码支付,不得不说,支付宝的文档写的真是一个烂(起码在下刚开始看的时候是mengbi的).文档上面的示例和demo里面的示例长的完全不一样.往往文档上面的例子很简单,而demo ...
- [Swift]LeetCode530. 二叉搜索树的最小绝对差 | Minimum Absolute Difference in BST
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- FastDFS 学习笔记
一.理论基础 FastDFS比较适合以中小文件为载体的在线服务,比如跟NGINX(APACHE)配合搭建图片服务器. 分布式文件系统FastDFS FastDFS是纯C语言实现,只支持Linux. ...
- 针对 Ocelot 网关的性能测试
一.背景 目前我们项目是采用的 Ocelot 作为 API 网关,并且在其基础上结合 IdentityServer4 开发了一套 API 开放平台.由于部分项目是基于 ABP 框架进行开发的,接口的平 ...
- 一张脑图说清 Nginx 的主流程
一张脑图说清 Nginx 的主流程 这个脑图在 nginx-1.14.0-research 上.这是我在研究nginx的http模块的时候画的.基本上把 Nginx 主流程(特别是 HTTP 的部分) ...
- 快速搭建WebAPI(Odata+Code-First)附Odata条件查询表~
Odata是什么? 开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准.该标准由微软发起,前三个版本1.0.2.0.3.0都 ...