python爬虫数据保存到mongoDB的实例方法
作者:yang 发布时间:2021-10-10 09:52:24
标签:python,爬虫数据,mongoDB
爬虫数据保存到mongoDB的方法:
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的扩展)。
*可通过网络访问。
实例扩展:
# 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)
来源:https://www.py.cn/spider/guide/18441.html
0
投稿
猜你喜欢
- 平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。1、当需要向表中装载大量的数据流或者需要处理大
- 我们先从一个常见的Python编程错误开始说起,我已经见过非常多的程序员犯过这种错误了:def do_not_raise(user_defi
- 本文实例讲述了python基于BeautifulSoup实现抓取网页指定内容的方法。分享给大家供大家参考。具体实现方法如下:# _*_ co
- 引起这个的原因大概是现安装了.Net Framework后装的IIS导致.Net没有在IIS里注册。 在网上找了很久都是说从.net命令行工
- javascript 代码实现vbscript中的trim、left、right等函数兼容IE,FireFox。<style>b
- 之前遇到技术问题总能在技术博客上得到启发,十分感谢各位的无私分享。而自己却很少发文,固然是水平有限,但也限制了知识积累和总结。今后多总结分享
- 1,建立数据库文件cnbruce.mdb(不设计任何表)建立数据库的代码:<% Option Explicit&
- 英文文档:eval(expression, globals=None, locals=None)The arguments are a st
- 这篇文章主要介绍下如何创建并调用函数。print():是打印放入对象的函数 len():是返回对象长度的函数 input():是让用户输入对
- 人一旦习惯了某些东西就很难去改,以及各种各样的原因,新的浏览器越来越多,而老的总淘汰不了。增长总是快于消亡导致了浏览器兼容是成了谈不完的话题
- 把程序放到一个文件中,然后包含再call就可以了。(JMAIL4.3)<%'警告函数sub w_msg(messag
- 背景:做任务领金币的过程很无聊,而且每天都是重复同样的工作,非常符合自动化的定义;工具:python,appium,Android 手机(我
- 相信大家对于常见 CSS BUG 的处理已经相对比较熟悉,例如:IE6 Three Pixel Gap、IE5/6 Doubled Floa
- 最近老婆大人的公司给老婆大人安排了一个根据关键词查询google网站排名的差事。老婆大人的公司是做seo的,查询的关键词及网站特别的多,看着
- Go 中时间格式化的模板const ( ANSIC = "Mon Jan _2 15:04:
- 接触Python时间也不是很长的,最近有个项目需要分析数据,于是选用Python为编程语言,除了语言特性外主要还是看重Python对于SQL
- 这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 需要在程序中使用二维数组,网上找到一种这样的用法: #创建一个宽度为3,高度为4的数组#[[0,0,0], # [0,0,0],#
- 或者说有一条命令 hostname [string],当string是不包含2950时,是true,包含2950时是false。使用Exce
- 前言本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能。示例图如上图,我们