废话不多说,直接上代码,将数据存入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. python学习之路(12)

    迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在Python中,迭代是通过for ... in来完成的,而 ...

  2. 13.多线程设计模式 - Future模式

    多线程设计模式 - Future模式 并发设计模式属于设计优化的一部分,它对于一些常用的多线程结构的总结和抽象.与串行相比并行程序结构通常较为复杂,因此合理的使用并行模式在多线程并发中更具有意义. 1 ...

  3. kotlin 冷知识 *号 展开数组

    Kotlin笔记-冷门知识点星号(*) 2019年05月10日 11:37:00 weixin_33724059 阅读数 6   可变参数展开操作符 在数组对象前加*号可以将数组展开,方便传值,比如: ...

  4. 【转】jQuery - 同时添加click和dblclick事件

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  5. 七、smarty--缓存的控制

    1.建议缓存 $smarty->cacheing = true; //设置为2是给每一个模板设置缓存 $smarty->setCacheDir(“”); 2.处理缓存的生命周期 $smar ...

  6. out 传值(传址)

    传值,只将这个变量的值给拿走,不返还,除非return赋值.将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a 传址,将这个变量的值拿走运算,完成后还是得返还回来(不用return, ...

  7. oracle11g RMAN catalog的基本使用

    编辑 /etc/hosts文件 tnsnames.ora文件 创建SQL> create tablespace ts_rman_catalog datafile '/u01/app/oracle ...

  8. Reactjs之Axios、fetch-jsonp获取后台数据

    1.新增知识点 /** Axios获取服务器数据(无法跨域,只能让后台跨域获取数据) react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数 ...

  9. python之拷贝文件

    做了个小实验, 用于拷贝文件夹下面的jpg. 用于拓展, 可以引入类和方法, 拷贝你指定的任意类型的文件. import os src = 'C:\\Users\\Administrator\\Des ...

  10. 阶段3 2.Spring_06.Spring的新注解_5 spring的新注解-PropertySource

    数据库的链接 次数是写死的 新建配置文件 定义成员变量 value注解实现 与配置文件的key对应 PropertySource 要想让spring去读取这个配置文件 resource编译后都跑到了. ...