AJAX接口-拉购网职位搜索爬虫
拉购网职位搜索爬虫
分析职位搜索调用接口:
- 浏览器开发者模式(快捷键
F12
)切换手机模式,打开拉购网职位搜索链接 https://m.lagou.com/search.html - 输入搜索关键词, 例如"Python" ,可以看到右侧的
XHR
中出现一个AJAX调用请求 https://m.lagou.com/search.json?city=%E5%85%A8%E5%9B%BD&positionName=Python&pageNo=1&pageSize=15 - 找到了AJAX接口后,我们就可以使用
requests
模拟发送请求来搜索职位信息了。
下面是实现源码:
#!/usr/bin/env python3
# -*-coding:utf8-*-
import logging
import traceback
import requests
from requests.adapters import HTTPAdapter
import json
import random
import sys
def usage():
print("Usage:\n\t lagou_search <keyword> [page_number] [地理位置] \n\n\t<keyword> : 搜索职位名称\n\t[page_number]显示页数,每页15条\n------\n")
if len(sys.argv) < 2:
usage()
sys.exit(1)
keyword = sys.argv[1]
if len(sys.argv) > 2:
page_num = int(sys.argv[2])
else:
page_num = 1
if len(sys.argv) > 3:
city = sys.argv[3]
else:
city = '全国'
LOG_FORMAT = "%(asctime)s - %(filename)s - %(funcName)s - %(lineno)s - %(levelname)s - %(message)s"
logging.basicConfig(filename=f'log.lagou.log', level=logging.DEBUG, filemode='a', format=LOG_FORMAT)
def get_proxy():
proxy_uri = 'socks5://127.0.0.1:1084'
proxies = {
'http': proxy_uri,
'https': proxy_uri
}
return proxies
def search_jobs(keyword, page):
proxies = get_proxy()
myheaders = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.1; OS105 Build/NGI77B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36',
}
headers = {
'Host': 'm.lagou.com',
'Accept': 'application/json,text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.1; OS105 Build/NGI77B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36',
'Referer': 'https://m.lagou.com/search.html',
'Accept-Language': 'zh-CN,zh;q=0.9'
}
payload = {
'city': city,
'positionName': keyword,
'pageNo': 1,
'pageSize': 15
}
result = {}
try:
s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=5))
s.mount('https://', HTTPAdapter(max_retries=5))
resp = s.get('https://m.lagou.com/search.html', headers=myheaders, proxies=proxies, timeout=10)
for pn in range(1, page+1):
payload['pageNo'] = pn
try:
resp = s.get('https://m.lagou.com/search.json', params=payload, proxies=proxies, timeout=10, headers=headers)
jscontent = resp.text
jsDict = json.loads(jscontent)
statusJson = jsDict['state'] if 'state' in jsDict.keys() else 0
if statusJson == 1:
if 'content' in jsDict.keys():
jsList = jsDict['content']['data']['page']['result']
for jsData in jsList:
result['positionId'] = jsData['positionId']
result['positionName'] = jsData['positionName']
result['city'] = jsData['city']
result['salary'] = jsData['salary']
result['companyFullName'] = jsData['companyFullName']
result['link'] = 'https://www.lagou.com/jobs/' + str(jsData['positionId']) + '.html'
print(json.dumps(result, ensure_ascii=False))
except Exception as e:
logging.exception(str(e))
except requests.exceptions.ProxyError as e:
logging.exception(f'proxy_error ' + str(e))
except Exception as e:
logging.exception(f'proxy: ' + str(e))
if __name__ == "__main__":
try:
search_jobs(keyword, page_num)
except Exception as e:
print(e)
脚本工具使用方法:
╰─ ./lagou_search.py
Usage:
lagou_search <keyword> [page_number] [地理位置]
<keyword> : 搜索职位名称
[page_number]显示页数,每页15条
------
AJAX接口-拉购网职位搜索爬虫的更多相关文章
- 关于网易云音乐爬虫的api接口?
抓包能力有限,分析了一下网易云音乐的一些api接口,但是关于它很多post请求都是加了密,没有弄太明白.之前在知乎看到过一个豆瓣工程师写的教程,但是被投诉删掉了,请问有网友fork了的吗?因为我觉得他 ...
- C#制作网盘搜索工具(简单的爬虫)
最近学习C#编程,在网上发现一篇winform下制作百度网盘搜索器的文章,故而下载源码学习一二.无奈原博所用的网址失效,故而自己改写了网址和相关源代码,也进行了实现.因为初学,接触的知识较多,为免忘记 ...
- [PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索
标题起的太大了,都是骗人的.最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台.用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址.就是这么一个简单的功能,类似很多的网盘搜索类网 ...
- 【Python3爬虫】网易云音乐爬虫
此次的目标是爬取网易云音乐上指定歌曲所有评论并生成词云 具体步骤: 一:实现JS加密 找到这个ajax接口没什么难度,问题在于传递的数据,是通过js加密得到的,因此需要查看js代码. 通过断掉调试可以 ...
- Redis 实战 —— 10. 实现内容搜索、定向广告和职位搜索
使用 Redis 进行搜索 P153 通过改变程序搜索数据的方式,并使用 Redis 来减少绝大部分基于单词或者关键字进行的内容搜索操作的执行时间. P154 基本搜索原理 P154 倒排索引 (in ...
- Python 微博搜索爬虫
微博搜索爬虫 网页分析 由于网页端反爬虫机制比较完善所以才去移动端进行爬虫. url地址:https://m.weibo.cn/ 搜索框,输入关键词进行搜索 对网页进行抓包,找到相关数据 查看数据是否 ...
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)
Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...
- 推荐一个百度网盘搜索工具www.sososo.me
推荐一个百度网盘搜索工具 http://www.sososo.me
- 【百度地图API】如何使用suggestion--下拉列表方式的搜索建议
原文:[百度地图API]如何使用suggestion--下拉列表方式的搜索建议 摘要: 百度地图上有一个很强大的搜索建议功能,以下拉列表的方式展示出来.比如,输入“百度”,下拉列表中就会出现“北京市海 ...
随机推荐
- 024 01 Android 零基础入门 01 Java基础语法 03 Java运算符 04 关系运算符
024 01 Android 零基础入门 01 Java基础语法 03 Java运算符 04 关系运算符 本文知识点:Java中的关系运算符 关系运算符
- Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序
一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...
- python数据结构之图深度优先和广度优先实例详解
本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...
- ubuntu1804 snort base
1.环境准备 apt安装 sudo apt-get update -y sudo apt-get dist-upgrade -y sudo apt-get install -y zlib1g-dev ...
- 第3天 | 12天搞定Python,用PyCharm编写代码
有了运行环境还不够,在程序的江湖里,还得有一把趁手的"兵器". 工欲善其事,必先利其器,在进行Python开发时,可选择 IDE挺多的,其中,以PyCharm. Eclipse+P ...
- golang 语言的特性
给函数传递参数的时候 map.slice.channel是按引用传递的 同一个变量不能用 := 这种方式创建并赋值两次. 一个包(package)的func .结构体类型变量如果要被外部的包调用.fu ...
- python中的对文件的读写
简单的实例 open函数获取文件,w是写权限,可以对文件进行io操作 file=open('C:/Users/Administrator/Desktop/yes.txt','w') file.writ ...
- 利用Image对象,建立Javascript前台错误日志记录
手记:摘自Javascript高级程序设计(第三版),利用Image对象发送请求,确实有很多优点,有时候这也许就是一个创意点,再次做个笔记供自己和大家参考. 原文: 开发 Web 应用程序过程中的一种 ...
- Ubuntu安装zookeeper问题
在Ubuntu系统安装zookeeper后,启动报错: root@host8:/usr/solrcould/service1/zookeeper-3.5.0-alpha# sh bin/zkServe ...
- 第十九章 DHCP原理介绍
一.为什么使用DHCP 1.手动为局域网中大量主机配置IP地址.掩码.网关等参数的工作繁琐,容易出错 2.DHCP可以自动为局域网中主机完成TCP/IP协议配置 3.DHCP自动配置避免了IP地址冲突 ...