2019.04.26 mongaodb
打开服务 mongod.exe --dbpath E:\Develop\mongodb_64\data\db
在安装和打开服务之前要建一个db 文件的存储位置
然后打开服务
打开服务之后 打开图形化界面连接 好像也没什么需要注意了
通俗来说, robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。
当然,我们并不是在做搜索引擎,而且在某些情况下我们想要获取的内容恰恰是被 robots.txt 所禁止访问的。所以,某些时候,我们就要将此配置项设置为 False ,拒绝遵守 Robot协议
作者:一只小蜗牛Snail
链接:https://www.jianshu.com/p/1b5d7d904b21
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker类似于虚拟机那种环境 http://get.daocloud.io/
Splash是一个javascript渲染服务。它是一个带有HTTP API的轻量级Web浏览器,使用Twisted和QT5在Python 3中实现。QT反应器用于使服务完全异步,允许通过QT主循环利用webkit并发。
一些Splash功能:
- 并行处理多个网页
- 获取HTML源代码或截取屏幕截图
- 关闭图像或使用Adblock Plus规则使渲染更快
- 在页面上下文中执行自定义JavaScript
- 可通过Lua脚本来控制页面的渲染过程
- 在Splash-Jupyter 笔记本中开发Splash Lua脚本。
- 以HAR格式获取详细的渲染信息
何为动态的页面:数据改变吧
虚拟化 任务管理 CPU查看是否开启
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
分布式让爬虫的效率更高
linux 的安装 操作系统的安装(centos6)
VMware安装好了之后,要先创建一个虚拟环境,分区磁盘运行内存啥的。然后才安装操作系统, 对啊我的系统也放在这些分区中,这些硬件中
所以操作系统不应该包括这些的。自己不可能在配置这些硬件什么之类的,不然就是写死了
windou连接虚拟机 传输文件 Xshell Xftp 一般文件放在/OPT 但是我解压文件之后,应该怎么安装呢
所以计算机也会有全局变量这种东西 环境变量也有全局的和局部的
克隆的时候也要注意硬件网卡的东西,克隆出来是一样的可能会冲突。 硬件?TCP/IP吗
那该怎么办呢 删除网卡 vi ifcfg-eth0
然后是删除硬件信息 70-persistent-net.rules 不对啊 把自己的网卡还有硬件信息都删了,那自己怎么办
怎么克隆呢:先拍快照 然后管理里有克隆
然后发现用户名是一样的那要怎么改呢?
cd /etc/sysconfig/
vi network
init 6 是重启吗
分布式内容:
在虚拟机中装了什么,python3,scrapy以及它的环境,scrapy-redis 而他们是跑爬虫程序的机器
windows是核心服务器需要装redis服务器
我们在master上搭建一个redis数据库`(注意这个数据库只用作url的存储),并对每一个需要爬取的网站类型,都开辟一个单独的列表字段。通过设置slave上scrapy-redis获取url的地址为master地址。这样的结果就是,尽管有多个slave,然而大家获取url的地方只有一个,那就是服务器master上的redis数据库
并且,由于scrapy-redis自身的队列机制,slave获取的链接不会相互冲突。这样各个slave在完成抓取任务之后,再把获取的结果汇总到服务器上
3.分布式爬虫的实现
使用三台机器,一台是win10,两台是centos6,分别在两台机器上部署scrapy来进行分布式抓取一个网站
win10的ip地址为192.168.31.245,用来作为redis的master端,centos的机器作为slave
master的爬虫运行时会把提取到的url封装成request放到redis中的数据库:“dmoz:requests”,并且从该数据库中提取request后下载网页,再把网页的内容存放到redis的另一个数据库中“dmoz:items”
slave从master的redis中取出待抓取的request,下载完网页之后就把网页的内容发送回master的redis
重复上面的3和4,直到master的redis中的“dmoz:requests”数据库为空,再把master的redis中的“dmoz:items”数据库写入到mongodb中
master里的reids还有一个数据“dmoz:dupefilter”是用来存储抓取过的url的指纹(使用哈希函数将url运算后的结果),是防止重复抓取的
这些数据库:mongo,redis,Mysql 在python连接他们的时候,他们都要的打开服务,都是独立的软件,如何进行通信呢?
就通过这个服务的,应该会有端口之类的 设计这些东西可能都是基于Linux系统吧,都没有图形化界面 也没有像qq那样安装的简单
所以他们也是提供的自己的图形界面的 一个非关系型的数据库 一个是key value形式的 有16个小数据库的 一个关系型的大型数据库
现在环境已经搭建好了,我们的目标是什么,并发吗??? 按照上面的要求我必须在master中存request url 到redis中
然后在slave中获取master中的url进行爬取
splash与request结合 :有什么转变吗?只是在原基础上加了docker 的访问地址吗?
动态爬取吗??? 加载js吗? 与js有关系吗 不能爬取有js渲染的吗? 加载东西也是需要时间的
原来是这个意思
什么是lua代码 不晓得 这个lua代码应该是docker中的吧
splash 与scrapy结合:去上面的方式有什么不同 python提供了一个类吧 SplashRequest
这个就是 当我们发送请求的时候不用我们原来的Spider.request 了 而是用SplashRequest这个请求了
需要在setting中修改东西的
问题
有的页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无法获得
官网http://splash.readthedocs.io/en/stable/
解决方案
利用第三方中间件来提供JS渲染服务: scrapy-splash 等
利用webkit或者基于webkit库
Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力
pip install scrapy-splash
scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
selenium与scrapy结合:selenium可以驱动浏览器,scrapy还有去重url的作用
去重是在调度器有记录的,所以我们还想用selenium发送请求的话可以下载中间件下手
def start_request(self):
chrome = webdriver.Chrome()
chrome = get(url)
中间件有很多东西,但每次我们用的时候都是看源码。找到我们想要的模块
要使用middlewares就要在setting中开启 要使用pipeline就要setting中开启
虽然很好去关注下载中间件,但是这也是一个流程,我们下载的东西,肯定经过里面的
开始 // 属性用@符号,属性名用双引号 用中括号括起来 下一层用/ 隔开
还可以拼接 | concat 有意思的string
' concat(//span[@class="total"]/text(),//span[@class="unit"]/span/text())'
为什么那个什么ul下的li 索引不是从零开始的
如果推送过来的item不是字典的话 要记得用dict转换
好像真的是,他会先访问url 然后会在调度器中队列排序
scrapy-redis 这个也要安装的 在redis中就会生成字段 为什么redis不要连接呢
2019.04.26 mongaodb的更多相关文章
- PowerBI更新2019/04 - 解决方案架构 - PowerBI Solution Architecture(一图胜万字!)
Power BI 架构图 (2019/04) 1) Power BI Desktop 是一个免费的工具.它可以用来准备和管理数据模型:包括链接各种数据:做数据清洗:定义关系:定义度量值和层级关系:应用 ...
- 每日一练ACM 2019.04.13
2019.04.13 第1002题:A+B Proble Ⅱ Problem DescriptionI have a very simple problem for you. Given two in ...
- Alpha冲刺(3/10)——2019.4.26
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(3/10)--2019.4.26 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- v1.0.2-2017.04.26
v1.0.2-2017.04.26 增加支付宝.微信查询接口 增加订单轮询工程 增加网关下单后发起订单轮询业务流程 v1.0.1-2017.04.05 修复分页乱码bug 增加支付密码字段.商户服务器 ...
- Beta冲刺(5/7)——2019.5.26
所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(5/7)--2019.5.26 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...
- AI2(App Inventor 2)离线版服务器(2019.04.28更新)
我们的目标:搭建一个本地多用户的App Inventor 2 服务器 演示: http://ai2.fsyz.net [旧 win] http://ai2n.fsyz.net [新 Ce ...
- 最新版IntelliJ IDEA2019.1破解教程(2019.04.08更新)
[原文链接]:https://www.tecchen.xyz/idea-crack.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力有限,对文章 ...
- 每日一练ACM 2019.04.14
2019.4.14 第1001题:Sum Problem Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Onli ...
- 2019.3.26 SQL语句(进阶3)
表的联查 员工表与部门表 员工表:id,姓名,年龄,部门id 部门表:部门id,部门名,部门成立时间,部门领导,部门职责.... 表和表之间的关系 一对一 一对多 多对多 创建联查 创建表 先创建被依 ...
随机推荐
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- SQLServer中的CTE通用表表达式
开发人员正在研发的许多项目都涉及编写由基本的 SELECT/FROM/WHERE 类型的语句派生而来的复杂 SQL 语句.其中一种情形是需要编写在 FROM 子句内使用派生表(也称为内联视图)的 Tr ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-11项目日志解决方案
本文目录1. Net下日志记录2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 2.4 日志 ...
- fillder--修改返回数据
fillder面板中抓到想要的URL后: ①.在需要修改的url---右键------UNclocking For Editing(解除编辑功能) ②.承接上步,在数据结果的TextView模式下,返 ...
- SparkCore | Rdd| 广播变量和累加器
Spark中三大数据结构:RDD: 广播变量: 分布式只读共享变量: 累加器:分布式只写共享变量: 线程和进程之间 1.RDD中的函数传递 自己定义一些RDD的操作,那么此时需要主要的是,初始化工作 ...
- SQL Server Report Server 报表用户权限T-SQL查询
/************************************************************************** 查询用户在报表上的权限 ************ ...
- web理论知识--网页访问过程(附有Django的web项目访问流程)
当我们闲暇之余想上网看看新闻,或者看个电影,通常的操作是:打开电脑.打开浏览器.输入网址.浏览页面信息.点击自己感兴趣的连接......那么有没有想过,这些网页从哪里来的?过程中计算机又做了什么事情了 ...
- 一道很经典的 BFS 题
一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...
- linux中python3安装和使用
python安装 下载python安装包和依赖环境 #自由选择python3源码包的版本https://www.python.org/ftp/python/https://www.python.org ...
- Django——图书管理系统
基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...