【Python3爬虫】MongoDB入门
2018-09-10 01:06:12来源:博客园 阅读 ()
最近在学习MongoDB数据库,自己也是踩了不少坑吧,所以打算写一个MongoDB的入门教程。
一、MongoDB的简介和安装
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
关于MongoDB的安装,网上是有不少教程的,我想写一下我个人的安装方法吧。
我的电脑系统是Windows64位, 下载MongoDB是在官网下载的,网址为:https://www.mongodb.com/download-center#community。
注意:MongoDB最新版本已经没有了 32 位系统的安装文件。
我下载的就是这个4.0.2版本,下载完成后双击安装,在最后一步之前会有一个是否安装图形界面的选项,注意:这个钩子不要钩上,钩上的话就一直下不完了,可以装好MongoDB后再下。
安装完成之后,安装目录下应该会有一个data文件夹和log文件夹,如果没有的话需要自己新建文件夹。
二、MongoDB的简单使用
1、把MongoDB的bin目录添加到环境变量中。
2、在data文件夹下创建db文件夹,在log文件夹下新建一个mongo.log文本。
3、命令行下启动MongoDB服务器:
mongod --dbpath e:\MongoDB\data\db
如果看到以下信息,就说明MongoDB服务已经成功开启了。
在看到以上信息后,再打开一个命令行窗口,输入mongo即可连接MongoDB数据库。
4、如果每次使用MongoDB都要这么操作的话就太麻烦了,能不能像MySQL一样添加到Windows服务呢?答案当然是能,步骤如下:
(1)在MongoDB的安装目录下新建一个mongo.conf文本,打开mongo.conf,输入以下内容:
(2)打开cmd,输入以下内容:
mongod.exe --config e:\MongoDB\mongo.conf.txt --install --serviceName "MongoDB"
说下我在这遇到的一个坑吧,很多教程上写的都是mongo.conf,我这么写的时候会报错,说找不到文件,然后我加上了.txt就没问题了。
(3)查看是否添加成功:
打开cmd输入net start MongoDB,如果得到如下结果则说明MongoDB服务已经添加成功了。
三、编写一个爬虫并把数据存到MongoDB中
这个爬虫是爬取豆瓣读书TOP250的书籍信息,我们现在就这个爬虫爬取到的信息保存到MongoDB数据库中,为了增加这个爬虫的效率,我还使用了进程池。
话不多说,代码如下:
1 # 爬取豆瓣读书TOP250的信息
2 import requests
3 from lxml import etree
4 from bs4 import BeautifulSoup
5 import pymongo
6 from multiprocessing import Pool
7 import time
8
9 info_list = []
10
11 headers = {
12 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 "
13 "Safari/537.36",
14 }
15
16
17 def get_details(book_url):
18 res = requests.get(book_url, headers=headers)
19 res.encoding = 'utf-8'
20 soup = BeautifulSoup(res.text, 'html.parser')
21 details = soup.select('.intro p')
22 return details[0].text
23
24
25 def get_page(url):
26 res = requests.get(url, headers=headers)
27 s = etree.HTML(res.text)
28 titles = s.xpath('//*[@id="content"]/div/div[1]/div/table/tr/td[2]/div[1]/a/@title')
29 hrefs = s.xpath('//*[@id="content"]/div/div[1]/div/table/tr/td[2]/div[1]/a/@href')
30 grades = s.xpath('//*[@id="content"]/div/div[1]/div/table/tr/td[2]/div[2]/span[2]/text()')
31 others = s.xpath('//*[@id="content"]/div/div[1]/div/table/tr/td[2]/p[1]/text()')
32 for title, href, grade, other in zip(titles, hrefs, grades, others):
33 info = {
34 'title': title,
35 'grade': grade,
36 'details': get_details(href),
37 'other': other
38 }
39 info_list.append(info)
40 print("第{}页已解析完毕".format(int(url[str(url).index('=')+1:])//25+1))
41 time.sleep(3)
42
43
44 if __name__ == '__main__':
45 urls = ['https://book.douban.com/top250?start={}'.format(i * 25) for i in range(10)]
46 pool = Pool(processes=5)
47 pool.map(get_page, urls)
48 print(info_list)
49 print("开始保存数据,请稍等...")50 client = pymongo.MongoClient('mongodb://localhost:27017/')
51 db = client.test
52 db.create_collection('DouBan')
53 db.DouBan.insert_many(info_list)
54 print("豆瓣读书Top250书籍信息已经保存在MongoDB中!")
注意:运行爬虫之前记得打开MongoDB服务器。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python day2-爬虫实现github登录 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash