分布式爬虫联系项目1–阳光热线网站的分布式爬取

news/2024/5/18 13:06:29/文章来源:https://blog.csdn.net/qq_41174897/article/details/105888914

要爬取的目标网站地址:http://wz.sun0769.com/political/index/politicsNewest?id=1&page=1

要爬取的内容为问政标题和处理状态。

1、首先介绍Spider.py里面的代码

1.1、首先,如果要使用scrapy_redis分布式,需要导入scrapy_redis对应的包。这里使用深度爬取CrawlSpider来进行

from scrapy_redis.spiders import RedisCrawlSpider

1.2、将spider类继承自scrapy_redis的类,这里使用RedisCrawlSpider

class TestSpider(RedisCrawlSpider):

1.3、我们需要把allow_domain和start_urls进行注释,因为要进行分布式爬取,需要有一个共享的调度队列(用来存放请求对象URL的),所以这里要使用一个redis_key = ‘ts’,用于后续在使用redis时进行放入起始的URL

name = 'test'#http://wz.sun0769.com/political/index/politicsNewest?id=1&page=1redis_key = 'ts'# start_urls = ['http://wz.sun0769.com/political/index/politicsNewest?id=1&page=10']

完整的spider代码

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
#1、第一步导包
from scrapy_redis.spiders import RedisCrawlSpider
from scrapyRedisPro.items import ScrapyredisproItem
#2、
class TestSpider(RedisCrawlSpider):#3、name = 'test'redis_key = 'ts'# start_urls = ['http://wz.sun0769.com/political/index/politicsNewest?id=1&page=10']link = LinkExtractor(allow=r'id=1&page=\d+')    #这个链接提取器用于提取页码rules = (Rule(link, callback='parse_item', follow=True),)def parse_item(self, response):li_list = response.xpath('/html/body/div[2]/div[3]/ul[2]/li')for li in li_list:title = li.xpath('./span[3]/a/text()').extract_first()state = li.xpath('./span[2]/text()').extract_first()state = state.strip()item = ScrapyredisproItem()item['title'] = titleitem['state'] = stateprint(item)yield item

2、接着需要对Settings进行配置,进行基于Scrapy-redis下相关的共享的Pipeline管道和调度器等其他配置

2.1、在Settings里面,进行管道Pipeline、调度器Schedule、过滤器等其他配置,因为要进行分布式爬取,不仅是要有共享的请求队列,还需要有共享的Pipeline管道,才能对数据进行统一的存储和管理。

ITEM_PIPELINES = {#提交到scrapy_redis的管道中'scrapy_redis.pipelines.RedisPipeline': 300# 'scrapyRedisPro.pipelines.ScrapyredisproPipeline': 300,
}
#增加了一个去重容器类的配置,作用使用Redis的set集合来存储请求的指纹数据
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#使用Scrapy-Redis组件自己的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
#配置调度器是否要持久化,也就是当爬虫结束了,要不要清空Redis中请求队列和去重。
#如果=True,当机器出现宕机,那么重新连接后会接着去爬,否则从0开始。相对于增量式操作。
SCHEDULER_PERSIST = True
#Scrapy默认的开启32个线程池,进行并发的去爬取数据。因为本身爬取的数据比较少,只有10W条,所以没必要开启32,但改的主要原因是因为效果演示问题。如果某台机器网速比较好,很有可能直接将所有请求对象抢去,所以将它从32改为2方便演示。但如果你网速够好,这不是必要改的
CONCURRENT_REQUESTS = 1

3、进行redis服务器配置

#指定redis服务器
#这里要设置存储到哪一台机器的IP地址,设置到了哪一台的IP,那么数据就会存入哪一台机器中
REDIS_HOST = '192.168.1.6'
REDIS_POST = 6379

4、配置redis文件,修改redis.conf文件

4.1,我的主机是Mac主机,那么redis的目录是在/usr/local/etc/redis.conf,要修改的话可以在终端输入:vim /usr/local/etc/redis.conf,或者是直接前往文件夹找到

 

对应的Windows下,在redis的安装目录下即可找到

 

ト 第 + 数 宿 ト を 00k ト d ト R を dis ・ X64 ・ 3.2.18  コ 打 升  的 位 置  共 事 を  名 称  0 】 . _Wtndows 50 ( を Docum ” ね 600. do...  こ dump. rdb  E 冊 [ 09. d ⅱ  201  201  201

4.2修改文件

1、将这行bind注释掉,bind 127.0.0.1表示的是只有本机才能访问redis数据库,而如果假设我需要将Windows的机器爬取的数据和Mac爬取的数据都存储到的是Mac下的redis数据库中,那么需要把这行注释掉,Windows的机器才能访问。

 

2、修改保护模式,默认是yes,表示分布式其他机器可以访问你的redis但是只能读,但是不能写。而真正的分布式是需要进行写入的,所以这里需要把其改为no

5、启动redis

5.1、我这里以将数据存储到Windows的redis数据库中为例,所以在Windows下的终端下输入以下命令携带刚刚修改好的redis.conf配置文件来启动(默认是不启动的),此时就能看到redis服务器的启动

 

这个终端表示redis服务器的启动,不能关闭!在此基础上,再次开启一个终端,用来启动redis的客户端

6、启动工程项目

6.1、这里启动过程,需要进入到项目中的Spider模块中。

 

然后执行:scrapy runspider test.py,来启动

然后可以看到,在终端上显示,此时项目处于监听状态

 

6.2、往调度器的队列中扔一个URL

此时,就可以在Pycharm下看到整个项目开始在运行了

 

 

此时,再次查询redis,可以看到其下面多了3个数据结构

有时候会发现,test:requests的数据结构会消失,这是因为你的网络速度较快,一台机器即可处理,这会导致可能2台机器上只有一台在运行,另外一台处于监听状态。对于这种情况我是这么处理。

1、因为请求对象还是取决了你的起始URL。比如在这个项目中,这里我是使用CrawlSpider来深度爬取的,如果扔入的起始URL是第一页,那么很容易出现这种情况,我将起始URL扔为网页中的第5000页左右,是可以避免的

2、起始URL其实是可以扔入多个URL的,在这里扔入网站的第一页、第5000页、第8000页,这样也是可以看到两台分布式的机器都在运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_872857.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天气和气象数据网站集合

1.历史天气数据 我们当然可以去中国气象数据网http://data.cma.cn/ 那和注册麻烦,通过又慢,历史数据获取时间范围极其有限 这时候就可以看国外的网站了,当然准确率就没有保障了 著名的wunderground 包含2005年至今的数据,非常…

大型网站技术架构笔录(1):演化

一)大型网站软件系统特点: 1)高并发、大流量:想想每年双十一 2)高可用:7*24小时不间断服务 3)海量数据:存储管理海量数据 4)用户分布广泛,网络情况复杂 …

CV资源:网站,Companies,Labs及牛人

学习网站: http://videolectures.net/ (you can find everything) https://www.learnopencv.com/ companies: (1) Google AI: https://ai.google/about/ (2) Facebook AI Research (FAIR): https://research.fb.com/category/facebook-…

仿网易云音乐网站(加入个人社区)

演示地址github代码 小白代码,大佬们如果喜欢请star一下吧技术栈 前端: Vue,elementUI 后端 : Springboot,mybatis,nginx,node(网易云api) 数据库 : redis , mysql部分截图

关于大型网站技术演进的思考--存储的瓶颈

转自 (整合成一篇): 夏天的森林blog:(系统设计与架构(47)) 关于大型网站技术演进的思考(一)--存储的瓶颈(1) 关于大型网站技术演进的思考(二)--存储的瓶颈(2…

关于大型网站技术演进的思考--网站静态化处理

转自: 夏天的森林blog:(系统设计与架构(47)) 一 在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大 规模的并发访问量,如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过…

更改UA使火狐firefox伪装成谷歌chrome解决一些网站卡顿的问题

前言 作为资深火狐用户,非常讨厌chrome的垄断,很多网站针对chrome都有优化。而且一些网站禁止火狐使用html5播放器导致网站视频和直播卡顿。为了解决这个问题,可以将火狐伪装成chrome来解决这些问题 正文 打开火狐的配置页面: 地址栏输入a…

A5站长网:云建站与新IDC虚拟时代的到来-揭秘逐浪CMS2全新站群功能

原文来源:http://www.zoomla.cn/corp/media/2201.shtml Zoomla!逐浪CMS2 x1.4自2014年元旦发布后,几次向商业用户投递更新,已经日趋成熟。 作为国内领先的CMS厂商,我们保持每年领先发布、第一时间向用户投递最新应用的惯例&#x…

Bootstrap响应式设计在中国-关于移动网站和卓越网站体验的那些事儿

原文来源: http://www.hx008.com/corp/media/3438.html 为移动而生-更窄的网页并不是移动网页 提供完整的用户体验,打通移动端与客户端的区隔,这在中国互联网业界已经没有什么好争辩的了,然而天国总是有天国的实情,比如…

Bootstrap响应式设计在中国-关于移动网站和卓越网站体验的那些事儿

原文来源:http://www.hx008.com/corp/media/3438.html 为移动而生-更窄的网页并不是移动网页 提供完整的用户体验,打通移动端与客户端的区隔,这在中国互联网业界已经没有什么好争辩的了,然而天国总是有天国的实情,比如…

Bootstrap响应式设计在中国-关于移动网站和卓越网站体验的那些事儿

原文来源:http://www.hx008.com/corp/media/3438.html 为移动而生-更窄的网页并不是移动网页 提供完整的用户体验,打通移动端与客户端的区隔,这在中国互联网业界已经没有什么好争辩的了,然而天国总是有天国的实情,比如…

Bootstrap响应式设计在中国-关于移动网站和卓越网站体验的那些事儿

原文来源: http://www.hx008.com/corp/media/3438.html 为移动而生-更窄的网页并不是移动网页    提供完整的用户体验,打通移动端与客户端的区隔,这在中国互联网业界已经没有什么好争辩的了,然而天国总是有天国的实情&#xff0…

站长网专访:云建站与新IDC虚拟时代的到来-揭秘逐浪CMS1.4全新站群功能

原文:http://www.hx008.com/corp/media/3417.shtml Zoomla!逐浪CMS2 x1.4自2014年元旦发布后,几次向商业用户投递更新,已经日趋成熟。   作为国内领先的CMS厂商,我们保持每年领先发布、第一时间向用户投递最新应用的惯例&#x…

十个帮助你解决CSS问题的网站

下面是十个可以使得你的CSS更加有趣,简单并且也许可以解决多数你所遇到的CSS问题的网站。 1. 像素的艺术 你可能也喜欢使用像素艺术来制作你的网页。我可以说你们90%都是把像素艺术加入到png文件,但是如果怎么把它转变成CSS呢?这就是Pixel A…

优化简历的网站,小组面试到底在考察你的什么?

小组面试到底在考察你的什么? 【豹子辅导】 有没有发现你对这种小组面试这种形式害怕的根本就是你不知道做什么, 然后面试官又看着你,你也不知道他想看什么, 今天我们三个比较详细解说在这个,第一个呢,就…

Linux环境下快速搭建维基网站

Web 2.0这一概念,由OReilly媒体公司总裁兼CEO提姆奥莱理提出。他是美国IT业界公认的传奇式人物,是“开放源码”概念的缔造者,一直倡导开放标准,并活跃在开放源码运动的最前沿。 在Web2.0革命中,维基(Wiki&a…

旅游网站竞品分析—携程旅行网VS去哪儿网(下)

6.6携程团购和去哪儿团购搜索界面 携程页面很干净,只有城市选择、搜索框以及按钮,点击搜索框会有下拉框弹出,可以选择热门商圈和行政区以及辖区市县,用户可自行选择。去哪儿网团购搜索界面内容比较多,但搜索按钮颜色比…

旅游网站竞品分析—携程旅行网VS去哪儿网(上)

1.1目前现状 统计显示,2013 年中国旅游市场总交易额约为29475亿元,其中在线旅行市场交易额约为2522亿元。 在线机票业务总交易额约为 1544.6 亿元,在在线旅游市场中占比为61.2%;在线酒店业务总交易额约为 614.6 亿元,在在线旅游市…

旅游网站竞品分析—携程旅行网VS去哪儿网(中)

5.1 网站功能模块 5.1.1携程旅行网 5.1.2去哪儿网 5.2相同功能比较 功能 携程 去哪儿 总结 酒店 酒店搜索 筛选类型相对细化,除了位置、价格、星级品类、品牌外,还有设施服务和特色,可以快速帮助用户筛选出符合条件的酒店。有机酒搜索方式出现…

如何将本地项目上传到github网站

作用 对代码进行版本管理控制多人协作开发 下载本地仓库并安装 本地仓库 点击下载 上传项目步骤 以下所有操作都在项目目录进行,在shell窗口执行命令 进入项目目录,初始化 git init 添加要管理的文件 git add 文件名 查看git状态 git status 让修改被记录下来…