python爬蟲數(shù)據(jù)保存到mongoDB的實例方法
爬蟲數(shù)據(jù)保存到mongoDB的方法:
import pymongo
# 首先需要注意,mongodb數(shù)據(jù)庫存儲的類型是以鍵值對類型進(jìn)行存儲,所以在存儲以前一定要進(jìn)行數(shù)據(jù)篩選
def save_mongo(傳入的數(shù)據(jù)):
# 創(chuàng)建連接 因為使用的為本機(jī)數(shù)據(jù)庫,所以IP寫localhost即可,端口號為27017
client = pymongo.MongoClient('localhost',27017)
# 連接數(shù)據(jù)庫(這里注意一點,mongo數(shù)據(jù)庫有一個優(yōu)點,就是當(dāng)自己連接的數(shù)據(jù)庫和表都沒有的時候,會自動創(chuàng)建,所以不用擔(dān)心寫錯或者沒有表)
db = client['自己創(chuàng)建數(shù)據(jù)庫名']
# 連接表
collection = db['自己的表名(mongo中叫做集合)']
# 插入到數(shù)據(jù)庫中(這里使用dict進(jìn)行強(qiáng)制轉(zhuǎn)換,是為了保證數(shù)據(jù)為字典格式)
collection.insert(dict(傳入的數(shù)據(jù)))
mongoDB介紹:
它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。主要功能特性有:
*面向集合存儲,易存儲對象類型的數(shù)據(jù)。
*模式自由。
*支持動態(tài)查詢。
*支持完全索引,包含內(nèi)部對象。
*支持查詢。
*支持復(fù)制和故障恢復(fù)。
*使用高效的二進(jìn)制數(shù)據(jù)存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持云計算層次的擴(kuò)展性。
*支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
*文件存儲格式為BSON(一種JSON的擴(kuò)展)。
*可通過網(wǎng)絡(luò)訪問。
實例擴(kuò)展:
# 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爬蟲數(shù)據(jù)保存到mongoDB的實例方法的詳細(xì)內(nèi)容,更多關(guān)于爬蟲數(shù)據(jù)如何保存到mongoDB的資料請關(guān)注腳本之家其它相關(guān)文章!
- MongoDB安裝使用并實現(xiàn)Python操作數(shù)據(jù)庫
- 使用python向MongoDB插入時間字段的操作
- 如何用python 操作MongoDB數(shù)據(jù)庫
- 用Python實現(xiàn)定時備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器
- python連接mongodb數(shù)據(jù)庫操作數(shù)據(jù)示例
- python爬蟲用mongodb的理由
- Python MongoDB 插入數(shù)據(jù)時已存在則不執(zhí)行,不存在則插入的解決方法
- Python操作Mongodb數(shù)據(jù)庫的方法小結(jié)
- Python 操作 MongoDB 講解詳細(xì)
相關(guān)文章
pandas object格式轉(zhuǎn)float64格式的方法
下面小編就為大家分享一篇pandas object格式轉(zhuǎn)float64格式的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Tkinter組件實現(xiàn)Radiobutton的示例
Radiobutton組件用于實現(xiàn)多選一的問題,本文主要介紹了Tkinter組件實現(xiàn)Radiobutton的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Python+matplotlib實現(xiàn)填充螺旋實例
這篇文章主要介紹了Python+matplotlib實現(xiàn)填充螺旋實例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
django框架實現(xiàn)一次性上傳多個文件功能示例【批量上傳】
這篇文章主要介紹了django框架實現(xiàn)一次性上傳多個文件功能,結(jié)合實例形式分析了Django框架批量上傳相關(guān)實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-06-06
學(xué)會使用Python?Configparser處理ini文件模塊
這篇文章主要為大家介紹了使用Python?Configparser處理ini文件模塊的學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

