一、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分布式爬虫常规操作的更多相关文章

  1. 16 Scrapy之分布式爬虫

    redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...

  2. scrapy补充-分布式爬虫

    spiders 介绍:在项目中是创建爬虫程序的py文件 #1.Spiders是由一系列类(定义了一个网址或一组网址将被爬取)组成,具体包括如何执行爬取任务并且如何从页面中提取结构化的数据. #2.换句 ...

  3. Scrapy 框架 分布式 爬虫

    分布式 爬虫 scrapy-redis 实现 原生scrapy 无法实现 分布式 调度器和管道无法被分布式机群共享 环境安装 - pip install scrapy_redis 导包:from sc ...

  4. scrapy简单分布式爬虫

    经过一段时间的折腾,终于整明白scrapy分布式是怎么个搞法了,特记录一点心得. 虽然scrapy能做的事情很多,但是要做到大规模的分布式应用则捉襟见肘.有能人改变了scrapy的队列调度,将起始的网 ...

  5. scrapy进行分布式爬虫

    今天,参照崔庆才老师的爬虫实战课程,实践了一下分布式爬虫,并没有之前想象的那么神秘,其实非常的简单,相信你看过这篇文章后,不出一小时,便可以动手完成一个分布式爬虫! 1.分布式爬虫原理 首先我们来看一 ...

  6. 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  7. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  8. 爬虫--scrapy+redis分布式爬取58同城北京全站租房数据

    作业需求: 1.基于Spider或者CrawlSpider进行租房信息的爬取 2.本机搭建分布式环境对租房信息进行爬取 3.搭建多台机器的分布式环境,多台机器同时进行租房数据爬取 建议:用Pychar ...

  9. 基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL

    为了学习机器学习深度学习和文本挖掘方面的知识,需要获取一定的数据,新浪微博的大量数据可以作为此次研究历程的对象 一.环境准备   python 2.7  scrapy框架的部署(可以查看上一篇博客的简 ...

随机推荐

  1. vue中添加title中的小图标

    webpack.prod.conf.js 这个文件中: 引入代码const path = require('path') :下面是进行配置: new HtmlWebpackPlugin({ filen ...

  2. 使用ANY和ALL条件

    在比较运算符中,可以出现ALL和ANY,表示“全部”和“任一”,但是ALL和ANY不能单独使用,需要配合单行比较操作符>.>=.<.<=一起使用.其中: > ANY : ...

  3. error: can't copy 'docx\templates\default-docx-template': doesn't exist or not a regular file --------------- Failed building wheel for python-docx; python-docx的安装使用;python操作word

    本人第一安装python-docx很不幸就出现了,如下的错误:(如果你也遇到同样的错误,不要慌可以参考下面解决方案,由于第一次处理这种错误,如有不对欢迎大家多多批评指正) 问题所在是因为我们的setu ...

  4. linux 使用sh@d0ws0cks client

    Linux Centos7下安装使用Shadowsocks客户端,实现*** 准备 SS: 搭建一个可以连接外网的服务器 教程可见 自己动手搭梯子 服务器:本人用的腾讯云服务器,系统为Centos7 ...

  5. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(4)

    六.Libvirt 对于Libvirt,在启动虚拟机之前,首先需要define虚拟机,是一个XML格式的文件 列出所有的Instance # virsh list Id    Name         ...

  6. &和&&的共同点和区别、Java字符含义和Java创建对象的几种方式

    一.&和&&的共同点和区别 1.&和&&的联系(共同点): &和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定. 操 ...

  7. PHP 点阵5*7字体

    效果: 源码: <?php // standard ascii 5x7 font 纵向取模 // defines ascii characters 0x20-0x7f (32-127) $fon ...

  8. 推荐几个牛逼的 IDEA 插件,还带动图!

    阅读本文大概需要 2.3 分钟. 作者:纪莫, cnblogs.com/jimoer 这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍. JRebel for IntelliJ 一款热部署插件 ...

  9. IntelliJ Idea 2017 免费激活方法

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...

  10. [Swift]LeetCode883. 三维形体投影面积 | Projection Area of 3D Shapes

    On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes. Each ...