爬虫运行成功但没数据_基于Scrapy的分布式爬虫(腾讯社招)

环境

1. Scrapy

在Ubuntu安装Scrapy的步骤为:打开终端 >> 在终端输入命令:pip install scrapy >> 在终端输入命令:scrapy version >> 成功输出 Scrapy版本号则证明成功安装。

97fdfffc58f93f43ab56e1133889edfd.png

2. Redis(Ubuntu)

打开终端 >> 在终端输入命令:pip install redis

>> 在终端输入命令:sudo subl redis.conf(以管理员权限用sublime text3(可用 其他编辑器)编辑redis.conf文件)

>> 将redis.conf中的daemonize设置为daemonize no使得启动redis-server时可以明显看出redis- server已启动

>> 在终端输入命令:redis-server redis.conf(以redis.conf为配置文件启动redis-server) >> 成功则显示redis- server启动界面。

61753f5738eb6137b84d1d2b517947af.png

5419a6d3852eb139953d202fd980fb51.png

3. Redis(Win10)

打开浏览器 >> 输入以下网址“https://github.com/MicrosoftArchive/redis/releases” 下载Redis的zip压缩包

>> 本文下载的 是Redis-x64-3.2.100.zip>>将下载好的zip文件直接解压即可使用

>> 配置Redis-x64-3.2.100文件夹下的redis.windows.conf文 件使得redis-server不作为守护进程使用>>修改redis.windows.conf中的daemonize为daemonize no

>> 在Redis-x64-3.2.100目 录下启动“cmd”

>> 在cmd中输入“redis-server.exe redis.windows.conf”(以redis.windows.conf为配置文件启动redis- server)

>> 启动成功。

25806c704479056d241f4e26a60aee2a.png

c3bba51bbfe892f007c3da77dfeb341c.png

b0a1026458d8a153e42afbb60ea0f7d7.png

4. Redis Desktop Manager(Win10)

打开浏览器 >> 输入以下网址“https://redisdesktop.com/download” 下载Redis Desktop Manager的exe文件

>> 本文下载的是 Redis Desktop Manager的Windows版本

>> 将下载好的exe文件直接安装运行

>> 启动Redis Desktop Manager,设置其与本地Redis 数据库相连接(Master端在Windows下)

>> 测试连接情况。

fe249da090004b2fdf34d8c96ad068d3.png

71b8ff0eb4886f9e3562f0dc8e60686f.png

9e713a76082fc6070cbaf73a49d08abc.png

5. MongoDB

打开终端 >> 输入命令:sudo apt-get install mongodb

>> 再在终端输入命令:mongo –version,安装成功则输出MongoDB版本号

5c9392c066f78040bb7665f188556f32.png

6. Robo 3T

为了方便管理MongoDB,我们安装了Robo 3T。Robo 3T是一个MongoDB的可视化工具。

安装步骤如下:打开浏览器 >> 在浏览器输入以下 网址“https://robomongo.org

>> 选择相应的Robo 3T版本进行下载

>> 将下载好的压缩包进行解压即可直接使用

>> 在终端输入: robo3t --version,查看Robo 3T版本号

>> 启动Robo 3T,配置连接到本地MongoDB

3774d8e8e7ad3bdc5e9f2effb85ab825.png

ac4eb9992d2780de8335a5efc7470262.png

d6f953a39b264edc0687944d41b28c72.png

-------------------------------------------------------------------------------

各模块作用

1. items

爬虫抓取数据的工作实际上是从非结构化数据(网页)中提取出结构化数据。虽然Scrapy框架爬虫可以将提取到的数据以Python字典 的形式返回,但是由于Python字典缺少结构,所以很容易发生返回数据不一致亦或者名称拼写的错误,若是Scrapy爬虫项目中包含复 数以上的爬虫则发生错误的机率将更大。因此,Scrapy框架提供了一个items模块来定义公共的输出格式,其中的Item对象是一个用于 收集Scrapy爬取的数据的简单容器。

2. Downloader Middleware

Downloader Middleware是一个Scrapy能全局处理Response和Request的、微型的系统。Downloader Middleware中定义的Downloader Middleware设有优先级顺序,优先级数字越低,则优先级越高,越先执行。在本次分布式爬虫中,我们定义了两个Downloader Middleware,一个用于随机选择爬虫程序执行时的User-Agent,一个用于随机选择爬虫程序执行时的IP地址。

3. settings

settings模块用于用户自定义Scrapy框架中Pipeline、Middleware、Spider等所有组件的所有动作,且可自定义变量或者日志动作。

-------------------------------------------------------------------------------

测试

Master端为Win10物理机,Slave端为两个相同配置的Ubuntu虚拟机

1. 启动Master端的redis-server

启动成功如图,可以看出redis-server的运行端口为6379,版本号为3.2.100

13d71c32068739904e22f2db6a0f054b.png

2. 启动两个Slave端的爬虫程序

启动两个Slave端的爬虫程序,使其进入等待状态,等待Master端对其分配请求,此时爬虫程序 已启动中间件和管道功能,并紧随其后启动爬虫功能,由于刚启动爬虫,此时爬取的网页数为0。

c1b90163a36ba3a5e34b5852b85a4861.png

dfae931a6ea2cfd360f1afd0e1115c5e.png

3. 向Master端添加第一个URL请求

在物理PC机启动redis-cli客户端,往redis-server服务器端压入第一个URL请求

“lpush tencentspider:start_urls https://hr.tencent.com/position.php”

41ecce6ceaace68f4972a0dfe3f89bf8.png

4.数据展示(Redis)及验证

两个Slave端爬取完数据后,数据存储在Master端的Redis数据库。

aa05e70a22b2ef1687c87ef22c6f0a14.png

将Redis Desktop Manager中的Value值放入“https://www.json.cn/” 网站中查看,与被爬取网站作对比,发现信息一致,爬虫成功。

126bfbde8f86b7d0065325fa4db6a3d2.png

62d57e78d263d0de0abc087a25dde055.png

5.数据展示(MongoDB)

在本次分布式爬虫的最后,我们将爬取到的数据从Redis数据库转存入本地MongoDB数据库(save_2_mongodb.py)。

58af2f7d713fbd164b37ce1a86342af5.png

-------------------------------------------------------------------------------

运行视频:

263ec40580486b6092340648e5e3f4d7.png
https://www.zhihu.com/video/1002716467569119232

-------------------------------------------------------------------------------

源码

LZC6244/Python​github.com
80dd2e275d38ce087a00fbb02a3943a5.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值