-
用python爬了上千万条招聘信息后,最终分析出python要学这些才能就业...
一、准备前戏
1、使用的软件
python 3.8
pycharm 2021专业版 激活码
2、使用的内置模块
pprint >>> # 格式化输入模块 csv >>> # 保存csv文件 re >>> # re 正则表达式 time >>> # 时间模块
3、要安装的第三方模块
requests >>> # 数据请求模块
win + R 输入cmd 输入安装命令 pip install 模块名 ,如果出现爆红, 可能是因为网络连接超时,切换国内镜像源即可。
二、思路流程
爬虫就是模拟浏览器,对于服务器发送请求,得到它返回响应的数据。
数据来源分析
首先确定目标,分析数据内容,可以从什么地方获取。
数据是通过哪个url地址发送什么请求方式,携带了那些请求头,然后得到数据(通过开发者工具进行抓包分析)
我们分析数据,是分析服务器返回数据,而不是元素面板,elements 是元素面板,前端代码渲染之后的内容。
代码实现步骤
- 发送请求,对于我们刚刚分析的到url(数据包)地址发送请求,post请求,请求参数, header请求头;
- 获取数据,获取响应体的数据内容,服务器返回的数据;
- 解析数据,提取我们想要的内容,根据返回的数据,选择对应最适合的解析方式去提取数据;
- 保存数据,保存本地数据库/文本/表格数据;
- 多页爬取;
# 我还给大家准备了这些资料,直接在群里就可以免费领取了。 # 一群:872937351 (群满了的话加二群) # 二群:924040232 # python学习路线汇总 # 精品Python学习书籍100本 # Python入门视频合集 # Python实战案例 # Python面试题 # Python相关软件工具/pycharm永久激活
三、代码部分
兄弟们,最最最喜欢的环节到了,上代码。
import requests # 数据请求模块 import pprint # 格式化输入模块 import csv # 保存csv文件 import time # 时间模块 # 打开文件 等会进行保存 mode 是保存方式 a 追加写入 f = open('拉勾.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '标题', '公司名字', '城市', '薪资', '经验', '学历', '详情页', ]) csv_writer.writeheader() # 写入表头 for page in range(1, 11): # 1. 发送请求 字符串格式化输出 {}占位符 print(f'===================正在爬取第{page}页的数据内容===================') time.sleep(2) # 延时2秒钟 url = 'https://www.lagou.com/jobs/v2/positionAjax.json' # 确定请求的url地址 # headers 请求头 爬虫就是模拟浏览器 对于服务器发送请求, 得到他返回响应数据 # headers 作用 伪装python代码的 把python代码伪装成浏览器 去发送请求 简单反爬一种手段 # user-agent 用户代理 浏览器的身份标识 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' } # data 请求参数, post请求 需要传递一个from data表单数据 # pycharm使用的小技巧一: 快速批量替换 选中 ctrl + R 输入正则表达式匹配规则 # pycharm使用的小技巧二: 翻译插件 可以去安装 data = { 'first': 'true', 'needAddtionalResult': 'false', 'city': '全国', 'px': 'new', 'pn': page, 'fromSearch': 'true', 'kd': 'python', } # 通过requests这个模块里面post请求方法 对于url地址发送请求, 并且给传递一个data请求参数, headers 请求头, 最后response变量接收 response = requests.post(url=url, data=data, headers=headers) # <Response [200]> 放回的结果 response 对象 200 状态码 表示请求成功 # 2. 获取数据 response.json() 获取json字典数据 response.text 获取文本数据(字符串数据) response.content 二进制数据 # print(response.text) # pprint.pprint(response.json()) # 3. 解析数据 字典数据类型, 解析数据 提取内容 可以根据键值对取值 根据冒号左边的内容, 提取冒号右边的内容 # 根据冒号左边的内容, 提取冒号右边的内容 result = response.json()['content']['positionResult']['result'] # pprint.pprint(result) for index in result: # for循环 遍历 提取列表里面每一个元素 title = index['positionName'] # 标题 company_name = index['companyFullName'] # 公司名字 city = index['city'] # 城市 money = index['salary'] # 薪资 workYear = index['workYear'] # 经验 edu = index['education'] # 学历 href = f'https://www.lagou.com/wn/jobs/{index["positionId"]}.html' # json.loads() 字符串数据转字典 dit = { '标题': title, '公司名字': company_name, '城市': city, '薪资': money, '经验': workYear, '学历': edu, '详情页': href, } csv_writer.writerow(dit) print(dit)
原文:https://www.cnblogs.com/hahaa/p/15745641.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数