热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

拉勾抓职位简单小爬虫

花了十来分钟写了个这个小爬虫,目的就是想能够方便一点寻找职位,并且大四了,没有工作和实习很慌啊!爬虫不具有扩展性࿰

花了十来分钟写了个这个小爬虫,目的就是想能够方便一点寻找职位,并且大四了,没有工作和实习很慌啊!

爬虫不具有扩展性,自己随手写的,改掉里面的 keywordregion 即可爬行所有的招聘,刚开始测试的是5s访问一次,不过还是会被ban,所以改成了20s一次,没有使用多线程和代理池,懒,够用就行了,结果会保存到一个csv文件里面,用excel打开即可。

直接上代码:

import requests
import urllib.parse
import json
import time
import csvdef main():keyword &#61; &#39;逆向&#39;region &#61; &#39;全国&#39;headers &#61; {&#39;Accept&#39;: &#39;application/json, text/Javascript, */*; q&#61;0.01&#39;,&#39;Accept-Encoding&#39;: &#39;gzip, deflate, br&#39;,&#39;Accept-Language&#39;: &#39;zh-CN,zh;q&#61;0.9&#39;,&#39;Cache-Control&#39;: &#39;no-cache&#39;,&#39;Connection&#39;: &#39;keep-alive&#39;,&#39;Content-Length&#39;: &#39;37&#39;,&#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded; charset&#61;UTF-8&#39;,&#39;Host&#39;: &#39;www.lagou.com&#39;,&#39;Origin&#39;: &#39;https://www.lagou.com&#39;,&#39;Pragma&#39;: &#39;no-cache&#39;,&#39;Referer&#39;: &#39;https://www.lagou.com/jobs/list_%s?city&#61;%s&#39; % (urllib.parse.quote(keyword), urllib.parse.quote(region)),&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36&#39;,&#39;X-Anit-Forge-Code&#39;: &#39;0&#39;,&#39;X-Anit-Forge-Token&#39;: &#39;None&#39;,&#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;,}data &#61; {&#39;pn&#39;: 1,&#39;kd&#39;: keyword,}total_count &#61; 1pn &#61; 1jobjson &#61; []while 1:if total_count <&#61; 0:breakdata[&#39;pn&#39;] &#61; pnlagou_reverse_search &#61; requests.post("https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult&#61;false", headers&#61;headers, data&#61;data)datajson &#61; json.loads(lagou_reverse_search.text)print(&#39;page %d get finish&#39; % pn)if pn &#61;&#61; 1:total_count &#61; int(datajson[&#39;content&#39;][&#39;positionResult&#39;][&#39;totalCount&#39;])jobjson &#43;&#61; [{&#39;positionName&#39;: j[&#39;positionName&#39;], &#39;salary&#39;: j[&#39;salary&#39;], &#39;workYear&#39;: j[&#39;workYear&#39;], &#39;education&#39;: j[&#39;education&#39;], &#39;city&#39;: j[&#39;city&#39;], &#39;industryField&#39;: j[&#39;industryField&#39;], &#39;companyShortName&#39;: j[&#39;companyShortName&#39;], &#39;financeStage&#39;: j[&#39;financeStage&#39;]} for j in datajson[&#39;content&#39;][&#39;positionResult&#39;][&#39;result&#39;]]total_count -&#61; 15pn &#43;&#61; 1time.sleep(20)csv_header &#61; [&#39;positionName&#39;, &#39;salary&#39;, &#39;workYear&#39;, &#39;education&#39;, &#39;city&#39;, &#39;industryField&#39;, &#39;companyShortName&#39;, &#39;financeStage&#39;]with open(&#39;job.csv&#39;,&#39;w&#39;) as f:f_csv &#61; csv.DictWriter(f, csv_header)f_csv.writeheader()f_csv.writerows(jobjson)if __name__ &#61;&#61; &#39;__main__&#39;:main()

ajax动态加载的&#xff0c;直接打开调试工具看XHR即可。

转:https://www.cnblogs.com/Akkuman/p/9628545.html



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了为什么在main.js中写import不会全局生效的问题,并提供了解决方案。在每一个vue文件中都需要写import语句才能使其生效,而在main.js中写import语句则不会全局生效。本文还介绍了使用Swal和sweetalert2库的示例。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 开发笔记:python协程的理解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python协程的理解相关的知识,希望对你有一定的参考价值。一、介绍什么是并发?并发的本质就是 ... [详细]
  • 一、死锁现象与递归锁进程也是有死锁的所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作 ... [详细]
author-avatar
艳斐儿M
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有