前言:
此刻你们对“python自动抢单”大约比较注重,咱们都想要知道一些“python自动抢单”的相关知识。那么小编在网摘上网罗了一些有关“python自动抢单””的相关文章,希望你们能喜欢,姐妹们快快来了解一下吧!1 前言
金三银四刚过去没多久,秋招又即将到来,在忙碌又卷的季节,笔者曾经幻想着能一键抓取心仪公司所有的职位,然后根据自己的强项和求职意愿逐个击破,收获一篮子offer。其实,借助Python就能轻易完成这个目标的第一步,这篇文章将以著名金融科技公司PayPal官网为例,展示Python自动批量抓取职位的小技巧,帮你在求职路上快人一步!
注:本文仅用于学习研究Python编程技巧,如果侵权,将立即删除。
2 准备工作
首先,查看PayPal求职官网的结构,所发布的职位以列表的形式展示,点击列表里的职位,就可以跳转到对应的详情页。同时,某些国家和地区的职位比较多,分成了多页显示,则URL会以相应的页面编号来区分,例如。因此判断大致需要如下几步即可抓取到每个职位的详情:
定位职位列表,找到每个职位对应的URL遍历所有页面,重复完成上述操作,存储所有职位URL通过职位的URL,访问职位描述,定位详情所在的位置,并保存职位描述
3 用代码构建爬虫
Python环境的配置请参考之前的文章:两分钟打造淘宝抢单机器人
3.1 导入依赖的包
# 解析网页import requestsfrom bs4 import BeautifulSoup# 表格操作import numpy as npimport pandas as pd# 通用import reimport osimport unicodedata3.2 访问职位列表
# 访问URL,并取回返回结果def url_request(url): header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36'} r = requests.get(url, headers=header) print("Connection status:", r.status_code, '\n') return r.text3.3 解析职位类别
# 找到页面中需要的元素,存储职位列表信息def job_parser(html): header,desc,link = [[] for i in range(3)] soup = BeautifulSoup(html, "html.parser") # 右键通过打开浏览器检查器,在元素tab中查看网页源码,可看到职位名称的类别名字为primary-text-color job-result-title,并且是一个a标签 job_header = soup.find_all('a', attrs={'class': 'primary-text-color job-result-title'}) # 元素查找方法同上 job_link = soup.find_all('a', attrs={'class': 'primary-text-color job-result-title'}, href=True) header = [i.contents[0] for i in job_header] link = [";+i['href'] for i in job_link] # 将结果存起来 return pd.DataFrame({'Title':header, 'Link':link})3.4 遍历所有页面
# 创建一个存储结果的dataframedf = pd.DataFrame(columns=['Title','Link'])# 创建URL的模板,添加不同的页码就可匹配不同的页面job_url_header = ';# 遍历所有页面,并存储结果for i in range(2): job_url = job_url_header + str(i+1) print('URL: {}'.format(job_url)) job_html = url_request(job_url) # 将每个页面的结果存起来 df = df.append(job_parser(job_html))3.5 抓取职位详情
def get_jd(url): jd_html = url_request(url) soup = BeautifulSoup(jd_html, "html.parser") jd_desc = soup.find('div', attrs={'class': 'jdp-job-description-card content-card'}) # JD格式不一,此处仅做演示 if jd_desc: if jd_desc.findAll('ul')[:]: desc = [i.text + '\n{}'.format(j.text) for i,j in zip(jd_desc.findAll('p')[:], jd_desc.findAll('ul')[:])] else: desc = [i.text for i in jd_desc.findAll('p')[:]] return unicodedata.normalize("NFKD", '\n'.join(i for i in desc))# 对之前存储的内容使用详情抓取函数,将详情保存下来。df['JD'] = df['Link'].apply(get_jd)# 打印结果df.tail(2)
可以看到已经成功地抓取到了职位的信息(内容有截取)。网页上还有其他信息,你也可以根据自己的需求再继续添加信息,如果有疑问,欢迎关注BulletTech,然后添加微信客服详细讨论!
标签: #python自动抢单 #python抢单系统