MongoDB:
1. 什么是MongoDB
MongoDB是一个高性能,开源,无模式的文档型数据库
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成
2. MongoDB相关的安装
Windows的安装方法:
MongoDB 官网地址:https://www.mongodb.com/
![]()
我在安装3.6版本的过程中会卡死(如下图)。我刚开始误以为是正常的,电脑没关跑一夜...T_T
![]()
查阅了网上资料,我并不孤单,解决办法是在安装过程中,不要勾选Install MongoDB Compass
image.png
去掉勾选
知道怎么避开上面的大坑后,就可以照小歪老师的安装教程去安装吧。
- 小歪老师在自己的知乎专栏MongoDB及可视化工具的安装中给出了详细的MongoDB数据库、可视化工具RoboMongo和MongoDB的PyCharm插件——Mongo Plugin的安装步骤和方法,可按照步骤安装并测试连接
- Python用于操作MongoDB的第三方库pymongo安装:
``` pip install pymongo ```
Mac OS的安装方法:
- 参考Mac OSX 平台安装 MongoDB安装,可视化工具RoboMongo安装方法与Windows平台大致相同。
- MongoDB的PyCharm插件——Mongo Plugin安装: Preferences——Plugins——Mongo Plugin,安装完成后重启PyCharm可发现右侧有Mongo Explorer
- Python用于操作MongoDB的第三方库pymongo安装
``` pip install pymongo ```
- 测试连接
``` 首先需要使用以下方法在终端启动MongoDB cd /usr/local/mongodb/bin sudo ./mongod 然后在PyCharm右侧的Mongo Explorer连接localhost:27017即可 ```
3. MongoDB在Python中的基本使用
通过一个简单的例子展示使用pymongo连接MongoDB数据库,并插入数据
#! /usr/bin/env python # -*- coding:utf-8 -*- from pymongo import MongoClient client = MongoClient() db = client.test #连接test数据库,没有则自动创建 my_set = db.set #使用set集合,没有则自动创建 my_set.insert({'name':'Vinie','age':24})#插入一条数据
插入的数据可在MongoDB的test数据库的set集合中找到
![]()
实战
爬取拉勾网里关键词为“爬虫”的相关职位信息
![](https://img.haomeiwen.com/i6581981/a55d75e0504ed6ed.png)
拉勾网有对爬虫做了反爬处理。
直接发起requests,会出错。
请求头部,加上Referer
,User-Agent
,可以连续爬取几页信息后,会报错。再加上Cookie
。就解决了。
import requests
from pymongo import MongoClient
import time
client = MongoClient()
db = client.lagou
my_set = db.job
url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
def get_job_info(page,kd):
for i in range(page):
payload ={
"first": "true",
"pn": i+1,
"kd": kd
}
headers = {
"Cookie": "JSESSIONID=ABAAABAAAFCAAEGA357942019E2E1BC54FEA21772A7C75A; user_trace_token=20180626175355-c28a0798-703d-474a-bdf5-db6e78ef76f1; _ga=GA1.2.86233454.1530006829; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1530006829; LGUID=20180626175356-d72c696f-7926-11e8-9759-5254005c3644; SEARCH_ID=c9988e2253c6479f97d87324482689c3; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1530006846; LGRID=20180626175413-e160efe2-7926-11e8-b104-525400f775ce",
"Referer": "https://www.lagou.com/jobs/list_%E7%88%AC%E8%99%AB?labelWords=&fromSearch=true&suginput=",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
}
r = requests.post(url,data=payload,headers=headers)
if r.status_code == 200:
my_set.insert(r.json()["content"]["positionResult"]["result"])
else:
print("somnething wrong!")
print ("正在爬取第"+str(i+1)+"页")
time.sleep(3)
if __name__ == '__main__':
get_job_info(30,"爬虫")
![](https://img.haomeiwen.com/i6581981/decd8ab4947d531d.png)
相关资料
1. MongoDB
- 前往MongoDB 3.4 中文文档,学习更多关于MongoDB语法的知识
- 可以在Github的PyMongo中学习到更多pymongo包的用法
2. POST请求
- 阅读更加复杂的 POST 请求,学习关于requests的POST请求方法的用法
3. fake-useragent包
- 前往fake-useragent 0.1.7官方文档学习更多fake-useragent的用法
网友评论