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框架的部署(可以查看上一篇博客的简 ...
随机推荐
- php 跨数据库调取数据
我的这个是thinkphp,我就在 Application -> Common -> Conf -> config.php 文件里面配置数据库的地方,加入了下面这段代码 //'数据库 ...
- nginx参数 uri和request_uri讨论
uri可以输出rewrite后的uri不带参数,要用args查看 request_uri 是请求的完整的uri带参数
- node环境使用multer搭建一个图片接收服务器
为了测试图片上传插件的上传功能是否好用,最近尝试搭建了一个接收图片的服务器,因为图片上传的编码格式是form-data,所以我选择使用express+multer,实现过程中发现有几个需要注意的地方, ...
- Python程序员为什么一定要掌握Linux?
不少Python新手经常问到学Python到底需不需要学习Linux? Python不是支持Windows和Linux操作系统吗?能在Windows下开发为什么还要学习Linux? 问这样的问题的朋友 ...
- [Swift]LeetCode129. 求根到叶子节点数字之和 | Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- MiniProfiler监控Asp.Net MVC5和EF性能
1. 安装依赖包 在web项目打开nuget包管理器搜索 MiniProfiler.Mvc5和MiniProfiler.EF6安装. 2. 在Global.asax中添加配置代码 protected ...
- Nginx 动静分离与负载均衡的实现
一.前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题. 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我们对于网站环 ...
- mybatis-generator XML Parser Error on line 38: 必须为元素类型 "table" 声明属性 "enableInsertByPrimaryKey"。
1. 解决方法 在 table 元素中删除属性 enableInsertByPrimaryKey 即可.就是这么神奇... 2. 情景重现 使用 mybatis-generator 插件生成代码时报错 ...
- 【Redis篇】Redis集群安装与初始
一.前述 本文将单台节点不同端口模拟集群方式. 二.具体搭建 前提是安装好redis具体可参考http://www.cnblogs.com/LHWorldBlog/p/8463269.html 1 ...
- Python内置函数(10)——chr
英文文档: chr(i) Return the string representing a character whose Unicode code point is the integer i. F ...