废话不多说,直接上代码,将数据存入Mongdb

import requests
import pymongo
import time
import random mycon = pymongo.MongoClient('127.0.0.1',27017) # 建立连接
mydb = mycon['lagou_data'] # 设置库名 class LaGouSpider():
def __init__(self,city,kd):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',
'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',
}
self.city = city
self.max_pn = 1
self.kd = kd def get_start(self):
mycol = mydb[self.kd] # 设置集合名
url = "https://www.lagou.com/jobs/positionAjax.json?city="+ self.city +"&needAddtionalResult=false"
for page in range(1,10):
data = {
'first': 'true',
'pn': page,
'kd': self.kd
}
s = requests.Session()
s.get(url = "https://www.lagou.com/jobs/list_python%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88?labelWords=&fromSearch=true&suginput=",headers = self.headers)
cookies = s.cookies
response = s.post(url=url,data=data,cookies = cookies,headers = self.headers).json()
content = response.get('content')
if content:
result = content['positionResult']['result']
print('岗位名称:{},所在城市:{},开始抓取第:{}页\n'.format(self.kd,self.city,page))
for i in result:
lagou_data = {}
lagou_data['positionName'] = i['positionName'] # 岗位名称
lagou_data['companyFullName'] = i['companyFullName'] # 公司全名
lagou_data['workYear'] = i['workYear'] # 工作经验要求
lagou_data['education'] = i['education'] # 学历要求
lagou_data['jobNature'] = i['jobNature'] # 工作性质
lagou_data['salary'] = i['salary'] # 薪资
lagou_data['city'] = i['city'] # 所在城市
lagou_data['financeStage'] = i['financeStage'] # 金融阶段
lagou_data['industryField'] = i['industryField'] # 经营范围
lagou_data['companyShortName'] = i['companyShortName']# 公司简名
lagou_data['positionAdvantage'] = i['positionAdvantage']# 岗位优势
lagou_data['companySize'] = i['companySize'] # 公司规模
lagou_data['companyLabelList'] = i['companyLabelList']# 岗位待遇标签
lagou_data['district'] = i['district'] # 所在区域
lagou_data['positionLables'] = i['positionLables'] # 技术范围标签
lagou_data['firstType'] = i['firstType'] # 岗位类型
lagou_data['createTime'] = i['createTime'] # 发布时间
print(lagou_data)
mycol.insert(lagou_data)
time.sleep(random.uniform(3,7)) # 随机休眠 if __name__ == '__main__':
lagou = LaGouSpider('北京','python')
lagou.get_start()

简述:拉勾网反爬一般,也就是先获取该搜索页面中的 cookies信息,然后添加到返回的json数据接口中。

python 抓取拉勾网 攻略的更多相关文章

  1. (转)python爬取拉勾网信息

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  2. scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立

    本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visua ...

  3. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  4. 使用 Python 抓取欧洲足球联赛数据

    Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤    数据的采集和获取    数据的清洗,抽取,变形和装载    数据的分析,探索和预测    ...

  5. python抓取性感尤物美女图

    由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...

  6. fiddler Android下https抓包全攻略

    fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...

  7. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  8. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  9. 如何用python抓取js生成的数据 - SegmentFault

    如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...

随机推荐

  1. php的mysql语法

    php操作mysqli(示例代码) 更新时间:2013年10月28日 :: 作者: 我要评论 关注脚本之家微信公众号(jb51net) 每周都有大礼相送哦 php操作mysqli的示例代码.需要的朋友 ...

  2. 如何使用IDEA运行 一个分布式的项目

    前一段时间,曾不止一次的尝试过,如何把一个分布式的maven项目,用IDE运行起来.连续的几次失败,让我明白之前启动的方式是有问题的.因此把正确的启动方式整理了一下 .引以为戒 一.起初启动失败的原因 ...

  3. Dubbo Admin 控制台

    下载项目源码 https://github.com/apache/incubator-dubbo-admin 解压后配置 zookeeper 地址,路径为 dubbo-admin-server/src ...

  4. 有关二次离线和 Yuno loves sqrt technology II

    二次离线 前置技能 莫队 修改查询 \(O(\sqrt n )-O(1)\) 平衡 概念 考虑朴素莫队离线询问,过程中维护信息从 \([l,r]\) 扩展为 \([l\pm 1,r\pm 1]\) , ...

  5. 清空mysql数据

    delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内 ...

  6. 第九章 SpringCloud之Zuul路由

    ############Zuul简单使用################ 1.pom.xml <?xml version="1.0" encoding="UTF-8 ...

  7. apache配置静态缓存

    配置静态缓存:节省带宽,加快访问速度,提高用户体验.<IfModule mod_expires.c> ExpiresActive on ExpiresByType image/gif &q ...

  8. 阶段3 2.Spring_10.Spring中事务控制_6 spring基于XML的声明式事务控制-配置步骤

    环境搭建 新建工程 把对应的依赖复制过来 src下内容复制 配置spring中的声明事物 找到bean.xml开始配置 配置事物管理器 里面需要注入DataSource 2-配置事物通知 需要先导入事 ...

  9. python学习笔记:(十五)迭代器和生成器

    一.迭代器: 1.迭代器是python最强大的功能之一,是访问集合元素的一种方式. 2.迭代器是一个可以记住遍历的位置的对象. 3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束.迭代 ...

  10. Google Home Mini配置失败解决办法

    Google Home Mini配置到最后一步时失败: There was a problem setting up Google Home Mini For help resolving this ...