python 抓取拉勾网 攻略
废话不多说,直接上代码,将数据存入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 抓取拉勾网 攻略的更多相关文章
- (转)python爬取拉勾网信息
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立
本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visua ...
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- fiddler Android下https抓包全攻略
fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
随机推荐
- [CSP-S模拟测试]:平方数(数学+哈希)
题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 ...
- Java JDBC 基础
JDBC API 包含以下几个核心部分: 1:JDBC 驱动 2:Connections (连接) 3:Statements (声明) 4:Result Sets (结果集) JDBC: 打开数据库连 ...
- Linux高级调试与优化——ptrace
ptrace (process trace) #include <sys/ptrace.h> long ptrace(enum __ptrace_request request, pid_ ...
- java 深入HashMap
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...
- 解决ssh链接慢问题
1,ssh -v root@ip 2,查看哪里卡住了 一般情况就是卡在debug1: SSH2_MSG_SERVICE_ACCEPT received 3,如果是上面卡住了 修改/etc/ssh/ss ...
- java里poi操作excel的工具类(兼容各版本)
转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...
- Selenium 2自动化测试实战12(获得验证信息)
一.获得验证信息 通常用的最多的几种验证信息分别是:title.URL和text 运行脚本之后,结果如下图所示: #coding:utf-8 from selenium import webdrive ...
- linux:vi替换命令
linux:vi替换命令 vi/vim 中可以使用 :s 命令来替换字符串.以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询 ...
- MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)
背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有子节点(包含路径上的枝干节点和叶子节点) 枝干节点:如果一个节点下还有子节点,则为枝干节点. 叶子节点:如果一个节点下不再有子节点 ...
- fastcgi_params 与 fastcgi.conf的区别
参照文档: http://blog.51cto.com/noican/1766676