数据分析之前程无忧(一)
数据分析之前程无忧(一)这个是我们要爬取的网站:前程无忧前程无忧的网站是一个动态网站来的,单纯去抓取是无法抓取的,所以我们得找到他的接口,打开网站按f12选择network选项卡显然这个就是我们需要的找到的接口了根据他给出来的URL接口https://search.51job.com/list/000000,000000,0000,00,9,99,%25E5%25AF%25BC%25E6%25B8
数据分析之前程无忧(一)
这个是我们要爬取的网站:前程无忧
前程无忧的网站是一个动态网站来的,单纯去抓取是无法抓取的,所以我们得找到他的接口,打开网站按f12
选择network选项卡
显然这个就是我们需要的找到的接口了
根据他给出来的URL接口https://search.51job.com/list/000000,000000,0000,00,9,99,%25E5%25AF%25BC%25E6%25B8%25B8,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=
其中1是指页数,然后就根据他有多少页数就写一个for循环来进行叠加就好了
for i in tqdm(range(1,2,1)):
url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2599%25AF%25E5%258C%25BA%25E8%25AE%25B2%25E8%25A7%25A3%25E5%2591%2598,2,{}.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=".format(i)
然后匹配到的内容就是我们需要获取到的数据,这里可以用json也可以用正则把代码打印下来,这里本人推荐最好是正则,有时候json容易出错或者格式稍微有一点不一样,数据就容易出错,所以正则好一点
#招聘企业名称
company_names = re.compile('"company_name":"(.*?)",',re.S|re.I)
company_name = company_names.findall(content)
#招聘企业规模
companysize_texts = re.compile('"companysize_text":"(.*?)",', re.S | re.I)
companysize_text = companysize_texts.findall(content)
#招聘企业性质
companytype_texts = re.compile('"companytype_text":"(.*?)",', re.S | re.I)
companytype_text = companytype_texts.findall(content)
#招聘工作地区
workarea_texts = re.compile('"workarea_text":"(.*?)",', re.S | re.I)
workarea_text = workarea_texts.findall(content)
#招聘职位名称
job_names = re.compile('"job_name":"(.*?)",', re.S | re.I)
job_name = job_names.findall(content)
#招聘岗位薪资
providesalary_texts = re.compile('"providesalary_text":"(.*?)",', re.S | re.I)
providesalary_text = providesalary_texts.findall(content)
job_hrefs = re.compile('"job_href":"(.*?)",', re.S | re.I)
job_href = job_hrefs.findall(content)
JobDescribe = []
providesalary = []
这里有一点有注意,因为获取到的详细页面的时候,每个URL都需要改一下,这也是网页反爬虫的一个手段
for i in job_href:
job_url = i.replace("\\","")
html = session.get(job_url)
html.encoding = "gbk"
content = html.text
dom_test = etree.HTML(content)
job_describe = dom_test.xpath('//div[@class="tBorderTop_box"]//div[@class="bmsg job_msg inbox"]/p/text()')
JobDescribe.append(job_describe)
进去后,我们再用xpath语法来获取详细页面的具体内容,并且把它们全部打印出来
最后用pandas
把获取到的全部内容按顺序打印到csv文件里面,最好设置一个时间值,防止被系统检测出来,反正也不缺那点时间
df = pd.DataFrame()
df["企业名称"] = company_name
df["企业规模"] = companysize_text
df["企业性质"] = companytype_text
df["工作地区"] = workarea_text
df["职位名称"] = job_name
df["岗位薪资"] = providesalary
df["岗位描述"] = JobDescribe
try:
df.to_csv("前程无忧.csv", mode="a+", header=None, index=None, encoding="gbk")
print("写入成功")
except:
print("当页数据写入失败")
time.sleep(1)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
这里就是全部思路了,代码的话,可以去我的GitHub账户上面把源代码下载下来,如果对你有帮助的话,不嫌麻烦,可以在我的GitHub点一下start,你的支持是我更新的动力
这里就是全部思路了,代码的话,可以去我的GitHub账户上面把源代码下载下来,如果对你有帮助的话,不嫌麻烦,可以在我的GitHub点一下start,你的支持是我更新的动力

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)