1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import pymongo # 首先需要注意,mongodb数据库存储的类型是以键值对类型进行存储,所以在存储以前一定要进行数据筛选 def save_mongo(传入的数据): # 创建连接 因为使用的为本机数据库,所以IP写localhost即可,端口号为27017 client = pymongo.MongoClient( 'localhost' , 27017 ) # 连接数据库(这里注意一点,mongo数据库有一个优点,就是当自己连接的数据库和表都没有的时候,会自动创建,所以不用担心写错或者没有表) db = client[ '自己创建数据库名' ] # 连接表 collection = db[ '自己的表名(mongo中叫做集合)' ] # 插入到数据库中(这里使用dict进行强制转换,是为了保证数据为字典格式) collection.insert( dict (传入的数据)) |
mongoDB介绍:
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。
实例扩展:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# coding=utf-8 import re import requests from lxml import etree import pymongo import sys reload (sys) sys.setdefaultencoding( 'utf-8' ) def getpages(url, total): nowpage = int (re.search( '(\d+)' , url, re.S).group( 1 )) urls = [] for i in range (nowpage, total + 1 ): link = re.sub( '(\d+)' , '%s' % i, url, re.S) urls.append(link) return urls def spider(url): html = requests.get(url) selector = etree.HTML(html.text) book_name = selector.xpath( '//*[@id="container"]/ul/li//div/div[2]/a/text()' ) book_author = selector.xpath( '//*[@id="container"]/ul/li//div/div[2]/div/a/text()' ) saveinfo(book_name, book_author) def saveinfo(book_name, book_author): connection = pymongo.MongoClient() BookDB = connection.BookDB BookTable = BookDB.books length = len (book_name) for i in range ( 0 , length): books = {} books[ 'name' ] = str (book_name[i]).replace( '\n' ,'') books[ 'author' ] = str (book_author[i]).replace( '\n' ,'') BookTable.insert_one(books) if __name__ = = '__main__' : url = 'http://readfree.me/shuffle/?page=1' urls = getpages(url, 3 ) for each in urls: spider(each) |
以上就是python爬虫数据保存到mongoDB的实例方法的详细内容,更多关于爬虫数据如何保存到mongoDB的资料请关注服务器之家其它相关文章!
原文链接:https://www.py.cn/spider/guide/18441.html