打开服务  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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

如何将信息保存包Mongo中呢?安装MongoDB打开服务器之后
python中有第三包是连接MongoDB用的 需要安装  pymongo
然后引包就可连接MongoDB了  
但是在scrapy中我们该如何将数据保存到MongoDB中呢
那要是My sql呢?
奈斯 卧槽终于有一是可以关联上数据库了
妈耶 还有什么比这更好

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.分布式爬虫的实现

  1. 使用三台机器,一台是win10,两台是centos6,分别在两台机器上部署scrapy来进行分布式抓取一个网站

  2. win10的ip地址为192.168.31.245,用来作为redis的master端,centos的机器作为slave

  3. master的爬虫运行时会把提取到的url封装成request放到redis中的数据库:“dmoz:requests”,并且从该数据库中提取request后下载网页,再把网页的内容存放到redis的另一个数据库中“dmoz:items”

  4. slave从master的redis中取出待抓取的request,下载完网页之后就把网页的内容发送回master的redis

  5. 重复上面的3和4,直到master的redis中的“dmoz:requests”数据库为空,再把master的redis中的“dmoz:items”数据库写入到mongodb中

  6. 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不要连接呢

转载于:https://www.cnblogs.com/Py-king/p/10772454.html

2019.04.26 mongaodb相关推荐

  1. 2019.04.18晚上 玄易财富 ---老承

    2019.04.18晚上    玄易财富  ---老承 今晚我们分享---中国牛市历次特征 三月份最后一个交易日,沪指强力拉升近100点至3100点关口.券商板块大涨8个多点,保险银行也在平静中轮动起 ...

  2. v1.0.2-2017.04.26

    v1.0.2-2017.04.26 增加支付宝.微信查询接口 增加订单轮询工程 增加网关下单后发起订单轮询业务流程 v1.0.1-2017.04.05 修复分页乱码bug 增加支付密码字段.商户服务器 ...

  3. 训练日志 2019.1.26

    上午补了道 2-sat 的题,这类问题还是不太熟练,不是很能准确的找到条件 下午打比赛,立的 flag 成功崩了...数组没开小但把精度爆了..+= 把 + 忘了...一道巨水的题把输入看错了...大 ...

  4. Netrunner 2019.04 Rolling 版本发布

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   Netrunner 2019.04 Rolling 版本发布了,Netrunner 是基于 Ubuntu 的发行, ...

  5. 2019/04/12 华为通用软件开发工程师现场面试(offer到手)

    2019/04/12 华为通用软件开发工程师现场面试(offer到手) 时间轴 三月中旬做的笔试 3题ac两道 4/8 性格测试 4/12 现场面试 地点是 广州某家酒店,近地铁站的,中大过去也是要一 ...

  6. English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三

    English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三 主题 整体听一遍 精听 句子 1 扩展 way of doing | way to do st ...

  7. 18天精读掌握《费曼物理学讲义卷一》 第10天 2019/6/26

    18天精读掌握<费曼物理学讲义卷一> 第10天 2019/6/26 1. 18日掌握<费曼物理学讲义>卷一计划概览 2. 今日学习成果 3. 今日时间表 4.Atimelogg ...

  8. 2019.10.26

    2019.10.26 void Level::keyPressEvent(QKeyEvent *event){switch(event->key()){case Qt::Key_A:goingL ...

  9. 棒棒糖-小学数学出题机v1.4.2【更新2019/12/26】

    [推荐]2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今年儿子刚上一年级,现在每天要做口算题,每次都要打印100题随机题目让他做,网上找了很多出题器,不是操作太繁琐 ...

最新文章

  1. angular图片传到后台_告诉你,SpringBoot+Angular有多牛逼!
  2. 开源项目中成长:从实习小白到核心开发者
  3. 查看python 3.x 关键字 (保留字)(预留字)
  4. educoder答案python玩转列表_2020大学mooc用Python玩转数据章节测验答案
  5. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)
  6. 异星工厂 自动机器人_插件机机器人能够实现工厂自动化
  7. linux单网卡多拨Adsl,ROS单线多拨pppoe
  8. C语言第三次博客作业---单层循环结构
  9. 3dvary灯光材质为什么不亮_关机后电脑灯光闪瞎狗眼?在这里关闭它
  10. 自学 HTML 和 CSS,有哪些好的教材和网站教程推荐?
  11. 确认!这样学习 Python 能甩同行 10 条街!
  12. 消息中间件之JMS实践(ActiveMQ) 1
  13. 产品研发过程管理专题——软件工程(软件目的需求开发与管理)
  14. ubuntu下安装vmtool
  15. mysql if join_如何在MySQL中使用JOIN编写正确的If … Else语句?
  16. windows内核——基石
  17. Spring学习笔记(四)--spring配置文件schema约束
  18. 手机上php文件用什么打开方式,php是什么文件格式 php文件打开方法【图文】
  19. 18个Windows应该有却没有具有的苦守(2)
  20. PTA 循环结构 7-3 简写转全称

热门文章

  1. 哪款蓝牙耳机接电话好?接打电话的蓝牙耳机推荐
  2. java为什么要抛出异常_java抛出异常是怎么回事?
  3. Vue 中 CSS scoped 的原理
  4. Chrome浏览器安装JsonView插件
  5. C语言程序设计基础OJ练习题(实验十结构体与共用体)
  6. 九齐单片机应用-小家电开发(1)
  7. css3做一个loading动画效果(详细思路)
  8. springboot vue婚纱摄影师作品展示网站系统javaweb项目
  9. h5打包成apk,加固后重新签名(使用java的jdk,使用android的sdk)
  10. CSS入门教程——字体