爬虫学习笔记(2)使用MongoDB保存拉钩数据

栏目: Python · 发布时间: 8年前

内容简介:爬虫学习笔记(2)使用MongoDB保存拉钩数据

生苦短,我用Python

1、什么是MongoDB

MongoDB是一个高性能,开源,无模式的文档型数据库

MongoDB将数据存储为一个文档,数据结构由键值(Key=>value)对组成

2、 MongoDB 相关安装

Windows的安装方法:可以借鉴小歪老师的知乎专栏: MongoDB及可视化 工具 的安装 中给出了详细的MongoDB数据库、可视化工具RoboMongo和MongoDB的PyCharm插件--Mongo Plugin的安装步骤和方法,可按照步骤安装并测试连接,本人也是按照该教程一步一步操作的。实验都是成功的。

3、 Python 用于操作MongoDB的第三方库pymongo安装:

爬虫学习笔记(2)使用MongoDB保存拉钩数据

我这里是已经安装过了,所以是这样的提示,如果未安装,则是大致提示你安装成功的英文。

这里说下pip,我刚开始使用pip安装包的时候,一直提示未能识别pip,最后我找到python的安装目录下:C:\Users\XXXX\XXX\XXX\XXX\Python\Python35\Scripts下,shift+鼠标右击,在此处打开命令窗口,再使用pip install pymongo就成功了。

爬虫学习笔记(2)使用MongoDB保存拉钩数据

爬虫学习笔记(2)使用MongoDB保存拉钩数据

需要这样使用pip是因为我没有设置环境变量的原因。如果每次都是这样使用pip安装包很麻烦,所以如果你想每次随便在哪里打开cmd.exe都能pip安装包,则需要配置下环境变量:

配置流程:我的电脑(或计算机)-->右键属性-->高级系统设置-->环境变量-->系统变量-->path-->点击编辑-->将在刚才shift+右键地方的地址复制到里面,在随便在一个地方打开cmd.exe,输入pip都可以安装包了。

爬虫学习笔记(2)使用MongoDB保存拉钩数据

爬虫学习笔记(2)使用MongoDB保存拉钩数据

4、爬取拉钩网爬虫工程师数据并保存到MongoDB中

1、分析网页:想要爬取一个网站,首先必须去分析改网页的请求结构和返回结果结构。

爬虫学习笔记(2)使用MongoDB保存拉钩数据

由上图分析可知:请求url和请求方式post。

爬虫学习笔记(2)使用MongoDB保存拉钩数据

由上图可知:请求所需要的Cookie、Referer、和User-Agent。这些都是请求需要的参数。

爬虫学习笔记(2)使用MongoDB保存拉钩数据

点击response,可以看到该请求返回值,这样看不方便,我们可以全选复制,用json转换工具看一下:

爬虫学习笔记(2)使用MongoDB保存拉钩数据

爬虫学习笔记(2)使用MongoDB保存拉钩数据

爬虫学习笔记(2)使用MongoDB保存拉钩数据

由上图分析可知请求的参数:first:是否是第一页,pn:当前页数,kd:搜索关键字

爬虫学习笔记(2)使用MongoDB保存拉钩数据

由截图分析可知,返回结果中content-->positionResult-->result中数据是我所需要的。

代码实现:

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,'爬虫')

MongoDB保存数据成功后的结构如下图 所示:

爬虫学习笔记(2)使用MongoDB保存拉钩数据


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Boolean Reasoning

Boolean Reasoning

Brown, Frank Markham / 2003-4 / $ 19.15

A systematic treatment of Boolean reasoning, this concise, newly revised edition combines the works of early logicians with recent investigations, including previously unpublished research results. Th......一起来看看 《Boolean Reasoning》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具