最全Python爬虫抓取智联招聘(基础版)_智联招聘 爬虫,2024年最新华为面试编程题 2024

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

以北京海淀区的python工程师为例进行网页分析。打开智联招聘首页,选择北京地区,在搜索框输入"python工程师",点击"搜工作":

接下来跳转到搜索结果页面,按"F12"打开开发者工具,然后在"热门地区"栏选择"海淀",我们看一下地址栏:

由地址栏后半部分searchresult.ashx?jl=北京&kw=python工程师&sm=0&isfilter=1&p=1&re=2005可以看出,我们要自己构造地址了。接下来要对开发者工具进行分析,按照如图所示步骤找到我们需要的数据:Request Headers和Query String Parameters :

构造请求地址:

paras = {  
   'jl': '北京',                # 搜索城市  
   'kw': 'python工程师',        # 搜索关键词   
   'isadv': 0,                    # 是否打开更详细搜索选项  
   'isfilter': 1,                # 是否对结果过滤  
   'p': 1,                        # 页数  
   're': 2005                    # region的缩写,地区,2005代表海淀  
}  
  
url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' + urlencode(paras)

请求头:

headers = {  
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',  
   'Host': 'sou.zhaopin.com',  
   'Referer': 'https://www.zhaopin.com/',  
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,\*/\*;q=0.8',  
   'Accept-Encoding': 'gzip, deflate, br',  
   'Accept-Language': 'zh-CN,zh;q=0.9'  
}

1.2 分析有用数据

接下来我们要分析有用数据,从搜索结果中我们需要的数据有:职位名称、公司名称、公司详情页地址、职位月薪:

通过网页元素定位找到这几项在HTML文件中的位置,如下图所示:

用正则表达式对这四项内容进行提取:

# 正则表达式进行解析  
pattern = re.compile('<a style=.\*? target="\_blank">(.*?)</a>.*?'        # 匹配职位信息  
   '<td class="gsmc"><a href="(.\*?)" target="\_blank">(.*?)</a>.*?'     # 匹配公司网址和公司名称  
   '<td class="zwyx">(.*?)</td>', re.S)                                # 匹配月薪        
  
# 匹配所有符合条件的内容  
items = re.findall(pattern, html)

注意:解析出来的部分职位名称带有标签,如下图所示:

那么在解析之后要对该数据进行处理剔除标签,用如下代码实现:

for item in items:  
   job_name = item[0]  
   job_name = job_name.replace('<b>', '')  
   job_name = job_name.replace('</b>', '')  
   yield {  
       'job': job_name,  
       'website': item[1],  
       'company': item[2],  
       'salary': item[3]  
   }

2、写入文件

我们获取到的数据每个职位的信息项都相同,可以写到数据库中,但是本文选择了csv文件,以下为百度百科解释:

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

由于python内置了csv文件操作的库函数,所以很方便:

import csv  
def write\_csv\_headers(path, headers):  
   '''  
   写入表头  
   '''  
   with open(path, 'a', encoding='gb18030', newline='') as f:  
       f_csv = csv.DictWriter(f, headers)  
       f_csv.writeheader()  
  
def write\_csv\_rows(path, headers, rows):  
   '''  
   写入行  
   '''  
   with open(path, 'a', encoding='gb18030', newline='') as f:  
       f_csv = csv.DictWriter(f, headers)  
       f_csv.writerows(rows)

3、进度显示

要想找到理想工作,一定要对更多的职位进行筛选,那么我们抓取的数据量一定很大,几十页、几百页甚至几千页,那么我们要掌握抓取进度心里才能更加踏实啊,所以要加入进度条显示功能。

本文选择tqdm 进行进度显示,来看一下酷炫结果(图片来源网络):

执行以下命令进行安装:pip install tqdm

简单示例:

from tqdm import tqdm  
from time import sleep  
  
for i in tqdm(range(1000)):  
   sleep(0.01)

4、完整代码

以上是所有功能的分析,如下为完整代码:

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值