好了!开头要说点啥,我想你们已经知道了! 没错!我又来装逼了·· 前面两篇博文,不知道大家消化得怎么了。不知道各位有没注意到,前面两篇博文完成的工作,只能保证下载;你电脑不能关机,不能断网,总之不能出意外!否则啊!!! !!!!你就得重头开始啊!!!! 今天,我们来想想办法让它不重头下载;我们来记录我们已经下载过的地址!ヾ(@⌒ ー ⌒@)ノ这样就可以实现不重新下载啦! 本来刚开始我是准备用本地 txt 来记录的,不过仔细一想用本地 txt 逼格不够啊!要不用 MySQL 吧!然后我自己就用了 MySQL。 然而你以为我会在这教程里面用 MySQL 嘛!哈哈哈!我们来用 MongoDB!!这数据库最近很火啊!逼格直线提升啊!哈哈哈!点我去官网下载 安装 mongoDB: 在 C 盘建一个用来存储数据的文件夹 MongoDB; 创建以下两个目录: C:\data\log\mongod.log 存储日志 C:\data\db 存储数据 在 C:\MongoDB 文件夹下面创建一个 mongod.cfg 的配置文件写入以下配置: 一定要取消隐藏后缀名,不然更改不会生效!
1 |
systemLog: |
在管理员权限的 cmd 中执行以下命令将 mongoDB 安装成服务:
1 |
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install |
上面两张图片是 GIF 点击是可以看到过程的哦!!!ヾ(=゚・゚=)ノ喵 ♪ 服务器安装完了,CMD 启动一下: 搞定! 好啦!数据库装完了,我们来接着上一篇博文的内容继续啦! 保险起见建议大家还是看一下 MongoDB 的基础(只需要知道那些命令是做了啥,这样就好啦!) 首先我们我们这一次需要一个模块 PyMongo;这是 Python 用来操作 MongoDB 的模块,不要担心使用起来很简单的!
1 |
pip install PyMongo |
现在我们在上一篇博文完成的代码中导入模块:
1 |
from pymongo import MongoClient |
第一步: 在 class mzitu(): 下面添加这样一个函数:
1 |
def __init__(self): |
好啦!第一步搞定, 第二步: 我们更改一下 def all_url 函数:
1 |
def all_url(self, url): |
第三步: 我们来改一下 def html 这个函数:
1 |
def html(self, href): |
第四步: 我们来改一下 def img 这个函数:
1 |
def img(self, page_url, max_span, page_num): ##添加上面传递的参数 |
self.meizitu_collection.save(post) 这个是怎么来的我要说一下,可能有点迷糊: def init(self): 函数中: client = MongoClient() db = client[‘meinvxiezhenji’] self.meizitu_collection = db[‘meizitu’] 所以意思就是:在 meizixiezhenji 这个数据库中的 meizitu 这个集合保存 post 这个字典里面的数据哦!这么解释懂了吧?ヾ(@⌒ ー ⌒@)ノ 好了、一个可以实现去重的爬虫就实现了!φ(゜ ▽ ゜*)♪ 是不是好简单 哈哈哈 顺带还存储了一堆信息(才不会告诉你们这才是我需要的呢) 好了 完整的代码贴上来了! PS:需要先说一下 MongDB 是不需要先建数据库和集合的,会自动判断 存在则直接写入数据,不存在 则先创建需要的数据库和集合,再写入数据(是不是超爽?哈哈哈)
1 |
from bs4 import BeautifulSoup |