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框架的部署(可以查看上一篇博客的简 ...
随机推荐
- 删除 id 列表 存进数据库
当图片写的传id的时候 用着方法存进数据库
- C语言复习1_变量与数据类型
变量命名规则: 1.变量名的首字母或下划线(不能是其他特殊符号) 2.变量名的其他字母包含下划线.数字 和字母 3.不能使用关键字 基本数据类型 分为数值型和非数值型,其中数值型分为整型和非整型 整型 ...
- mysql5.7忽略大小写问题
mysql5.7忽略大小写问题 1.1 前言 新安装mysql5.7版本后,linux环境下默认是大小写敏感的. 1.2 忽略大小写敏感步骤 进入mysql配置文件: vi /et ...
- JS日历插件 - My97 DatePicker用法详解
一.简介 1. 注意事项 (1)My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名: (2)各目录及文件的用途: WdatePicker.js 配 ...
- 微服务架构-选择Spring Cloud,放弃Dubbo
Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...
- [Swift]LeetCode219. 存在重复元素 II | Contains Duplicate II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- [Swift]LeetCode647. 回文子串 | Palindromic Substrings
Given a string, your task is to count how many palindromic substrings in this string. The substrings ...
- [Swift]LeetCode706. 设计哈希映射 | Design HashMap
Design a HashMap without using any built-in hash table libraries. To be specific, your design should ...
- [Swift]LeetCode868. 二进制间距 | Binary Gap
Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...
- [Swift]LeetCode980. 不同路径 III | Unique Paths III
On a 2-dimensional grid, there are 4 types of squares: 1 represents the starting square. There is e ...