投稿    登录
  您好,欢迎光临崔庆才的博客,祝大家新年快乐,鸡年大吉!

小白爬虫第三弹之去重去重

Python 哎哟卧槽 5771浏览 33评论

QQ图片20161022193315

好了!开头要说点啥,我想你们已经知道了!

QQ图片20161021224219

没错!我又来装逼了··

前面两篇博文,不知道大家消化得怎么了。不知道各位有没注意到,前面两篇博文完成的工作,只能保证下载;你电脑不能关机,不能断网,总之不能出意外!否则啊!!!

!!!!你就得重头开始啊!!!!

20160124759183737

今天,我们来想想办法让它不重头下载;我们来记录我们已经下载过的地址!ヾ(@⌒ー⌒@)ノ这样就可以实现不重新下载啦!

本来刚开始我是准备用本地txt来记录的,不过仔细一想用本地txt逼格不够啊!要不用MySQL吧!然后我自己就用了MySQL。

QQ图片20161102215153

然而你以为我会在这教程里面用MySQL嘛!哈哈哈!我们来用MongoDB!!这数据库最近很火啊!逼格直线提升啊!哈哈哈!点我去官网下载

安装mongoDB:

123

在C盘建一个用来存储数据的文件夹 MongoDB;

创建以下两个目录:

C:\data\log\mongod.log             存储日志

C:\data\db    存储数据

 

在C:\MongoDB文件夹下面创建一个mongod.cfg的配置文件写入以下配置:

一定要取消隐藏后缀名,不然更改不会生效!

在管理员权限的cmd 中执行以下命令将mongoDB安装成服务:

 

安装服务

上面两张图片是GIF点击是可以看到过程的哦!!!ヾ(=゚・゚=)ノ喵♪

 

服务器安装完了,CMD启动一下:

验证是否安装成功

搞定!

好啦!数据库装完了,我们来接着上一篇博文的内容继续啦!

保险起见建议大家还是看一下MongoDB的基础(只需要知道那些命令是做了啥,这样就好啦!)

首先我们我们这一次需要一个模块 PyMongo;这是Python用来操作MongoDB的模块,不要担心使用起来很简单的!

现在我们在上一篇博文完成的代码中导入模块:

第一步:

在class mzitu(): 下面添加这样一个函数:

好啦!第一步搞定,

第二步:

我们更改一下def all_url函数:

第三步:

我们来改一下 def html这个函数:

第四步:

我们来改一下def img 这个函数:

self.meizitu_collection.save(post)

这个是怎么来的我要说一下,可能有点迷糊:

def __init__(self):    函数中:

client = MongoClient()

db = client[‘meinvxiezhenji’]
self.meizitu_collection = db[‘meizitu’]

所以意思就是:在meizixiezhenji这个数据库中的meizitu这个集合保存post这个字典里面的数据哦!这么解释懂了吧?ヾ(@⌒ー⌒@)ノ

QQ图片20161021223818

好了、一个可以实现去重的爬虫就实现了!φ(゜▽゜*)♪是不是好简单 哈哈哈

顺带还存储了一堆信息(才不会告诉你们这才是我需要的呢)

好了 完整的代码贴上来了!

PS:需要先说一下MongDB是不需要先建数据库和集合的,会自动判断 存在则直接写入数据,不存在 则先创建需要的数据库和集合,再写入数据(是不是超爽?哈哈哈)

 

转载请注明:静觅 » 小白爬虫第三弹之去重去重

喜欢 (34)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

  1. 我照著版主這篇實作寫完突然覺得~如果沒有把圖片存到去mongodb只是透過比對網址來判別是否已經下載好像有點奇怪~似乎不需要用db也是可以達成…我的做法是在下載的時候去比對資料夾是否有相同的檔名有就跳過~沒有就下載

      • 這評論系統不是24小時運作?半夜就自動關閉??也需要休息的阿?想請教一下可以建立一個 self.img=[]直接把圖片存到mongodb裡面要如何實作呢?

          • 阿~原來在下一篇就有提了~不好意思~進度還沒到那邊真是多問了 XD順便問一下第四彈教程提到多線(進)程同時使用了thread & multiprocessing可我在拜讀你這篇 [Python爬蟲進階五之多線程的用法]提到 「Python下多線程是雞肋,推薦使用多進程!」第四彈教程裡,為何要使用 thread庫呢?不能只用multiprocessing實做分工爬取資料的功能?再次感謝版主大大

          • 那是当时学的时候,纯粹拿出来装逼的,如果你要用的记得 给下载图片的位置,加一个线程锁,或者参考评论有一个解决办法,不然由于线程的原因,图片和文件夹会错乱。另外,我和崔庆才不是一个人哈!那是真大佬!