生苦短,我用 Python1,什么是 MongoDB
MongoDB 是一个高性能,开源,无模式的文档型数据库
MongoDB 将数据存储为一个文档,数据结构由键值 (Key=>value) 对组成
2,MongoDB 相关安装
Windows 的安装方法:可以借鉴小歪老师的知乎专栏: MongoDB 及可视化工具的安装 中给出了详细的 MongoDB 数据库,可视化工具 RoboMongo 和 MongoDB 的 PyCharm 插件 --Mongo Plugin 的安装步骤和方法,可按照步骤安装并测试连接,本人也是按照该教程一步一步操作的.实验都是成功的.
3,Python 用于操作 MongoDB 的第三方库 pymongo 安装:
我这里是已经安装过了,所以是这样的提示,如果未安装,则是大致提示你安装成功的英文.
这里说下 pip,我刚开始使用 pip 安装包的时候,一直提示未能识别 pip, 最后我找到 python 的安装目录下:C:\Users\XXXX\XXX\XXX\XXX\Python\Python35\Scripts 下,shift + 鼠标右击,在此处打开命令窗口,再使用 pip install pymongo 就成功了.
需要这样使用 pip 是因为我没有设置环境变量的原因.如果每次都是这样使用 pip 安装包很麻烦,所以如果你想每次随便在哪里打开 cmd.exe 都能 pip 安装包,则需要配置下环境变量:
配置流程:我的电脑(或计算机)--> 右键属性 --> 高级系统设置 --> 环境变量 --> 系统变量 -->path--> 点击编辑 --> 将在刚才 shift + 右键地方的地址复制到里面,在随便在一个地方打开 cmd.exe,输入 pip 都可以安装包了.
4,爬取拉钩网爬虫工程师数据并保存到 MongoDB 中 1,分析网页:想要爬取一个网站,首先必须去分析改网页的请求结构和返回结果结构.
由上图分析可知:请求 url 和请求方式 post.
由上图可知:请求所需要的 Cookie,Referer,和 User-Agent.这些都是请求需要的参数.点击 response, 可以看到该请求返回值,这样看不方便,我们可以全选复制,用 json 转换工具看一下:由上图分析可知请求的参数:first: 是否是第一页,pn: 当前页数,kd: 搜索关键字
由截图分析可知,返回结果中 content-->positionResult-->result 中数据是我所需要的.
代码实现:
MongoDB 保存数据成功后的结构如下图 所示:
import requests
from pymongo import MongoClient
import time
from fake_useragent import UserAgent
client=MongoClient()
db=client.lagou
lagou=db.Reptile #创建Reptile集合,用于保存爬取到的数据集合
headers={
'Cookie':'',#此处写入你分析所得的Cookie
'Referer':''#此处写入你分析所得的Referer
}
def get_job_info(page,kd):#加入一个职位参数kd
for i in range(page):
url=''#此处写入你分析后所得的请求url
payload={
'first':'true',#是否是第一页参数
'pn':i,#当前页数.起翻页作用
'kd':kd #关键字
}
ua=UserAgent()#定义生成随机User-Agent的实例对象
headers['User-Agent']=ua.random #使用fake-Agent随机生成User-Agent,添加到headers
response=requests.post(url,data=payload,headers=headers)#获取请求结果
if(response.status_code==200):
job_json=response.json()['content']['positionResult']['result']#取出需要的数据
lagou.insert(job_json)#保存到MongoDB数据
else:
print('请求错误!')
print('正在爬取'+str(i+1)+'页的数据...')
if __name__=='__main__':
get_job_info(7,'爬虫')
来源: https://juejin.im/post/5a31d6a56fb9a045186abec5