爬虫入门(三)连接mongodb
来源:互联网 发布:javascript 模块化 编辑:程序博客网 时间:2024/06/05 19:07
连接mongodb
虽然说我们前面写了一个比较健壮的爬虫了,但是人生难免有意外,万一中断了,我们又要重新开始爬虫下载图片了,抓狂!那么我们想呢,怎么写一个判断图片有没有下载过呢?显然我们不能在文件夹里遍历….会慢到爆炸的,那么我们就可以借助数据库来实现去重啦
环境 ubuntu 16.04 python3.6.1 数据库mongodb
mongodb的一些基本操作在前面的博文有哟可以去看看或者自行百度
就讲几个常用的操作吧
show dbs 这是进入mongo的控制台后,查看有哪些数据库use xxx 进入mongo控制台后,进入哪些数据库show collections 查看当前你进入的数据库有多少个集合db.xxx.stats() 进入控制台后,查看当前集合的状态db.xxx.find() 查看当前集合的所有数据,默认显示20条db.xxx.find(xxxx) 查找数据,没有返回None
导入mongo的库 from pymongo import MongoClient
在程序中呢我们先写一个初始化函数来获得数据库的连接,顺便把之前的jpg_download_list和url都放进去了
def __init__ (self): self.client = MongoClient() self.db = self.client['mzituPic'] self.collection = self.db['mzitu'] self.jpg_download_list = [] self.base_url = 'http://www.mzitu.com'
前面三段代码的意思呢就是首先获得Mongo的监听,然后我们进入mzituPic这个数据库,然后获取这个数据库中的mzitu集合,很好理解吧?
然后呢我们在getAllJpg_Info()这个函数加入一下数据库
for jpgpage in range(1,int(total)+1): now_url = '{}/{}'.format(url,jpgpage) selector = html.fromstring(self.GetRespon(now_url,10).text) try: s = selector.xpath('//div[@class="main-image"]/p/a/img/@src')[0] except: continue if self.collection.find_one({'url':s}): print(u'这个图片已被爬取,跳过') else: self.jpg_download_list.append(s) self.collection.insert({'主题':title,'url':s})
代码也很好理解 ,就爬去图片的下载地址之后和数据库中的数据找一下,如果有一样的那么我们就跳过了,否则就加进数据库中
程序运行的时候我们可以小小查看一下数据库的情况
这样呢我们就简单的实现了一个能去重的爬虫啦,利用数据库能完成非常多的功能,留给你们实现吧
0 1
- 爬虫入门(三)连接mongodb
- 网络爬虫之BeautifulSoup入门(三)
- Python爬虫入门(三)BeautifulSoup库
- Python爬虫入门三
- c#.net连接mongodb入门(一)
- Clojure 学习入门(8)- 连接mongodb
- NoSql数据库MongoDB学习(三)MongoDB入门
- python爬虫--连接MongoDB 存数据
- MongoDB入门(三)-Java操作MongoDB
- 【mongoDB】mongoDB三秒入门笔记
- Python 定向爬虫入门—Python(三)
- python网络爬虫入门(三)———多线程
- Python3爬虫从入门到自残(三):保存数据
- Python 爬虫入门(三) HTTP协议请求方式
- python3 爬虫入门(三)正则表达式基本使用
- 爬虫(三)--图片爬虫
- Clojure 学习入门(8)—— 连接mongodb
- MongoDB入门(1)--搭建并连接服务器
- 【redis】redis使用前后性能对比
- 1027: 求具有abcd=(ab+cd)2性质的四位数
- TCP协议的11种状态变迁
- hdoj 1213 How Many Tables
- 剑指offer(java代码)——二维数组中的查找
- 爬虫入门(三)连接mongodb
- MYSQL 查看数据库大小以及表的大小
- no typehandler found for property XXXX 解决
- 多次使用axis2调用webservice后,报连接超时错误
- 工作笔记
- 一句话理解Vue核心内容
- 解决nginx如何存储HTTP客户端信息的问题
- java 哈希表
- 1028: 求函数值