最新消息:

拉勾网上Java vs PHP

PHP huizhechibangdeyu 56浏览 0评论

最近正在入门爬虫,昨天应同事的要求,就爬取了拉勾网上北京和杭州地区的Java和PHP职位信息,看看是Java有钱途还是PHP有前途O(∩_∩)O哈哈~

step1:首先分析一下要抓取的页面信息

拉勾网上Java vs PHP

进行翻页操作的时候,post请求的参数主要几个参数是city,pn,kd分别对应关键词城市,翻页数,职位。

step2:针对每个页面,根据自己的需求解析HTML页面内容,我使用的是python,推荐beautifulsoup+re的组合模式来解析网页内容。本次爬取只是简单地爬取红色框框里的信息,如果想爬取更多信息,可以进入每个职位的url页面爬取。

拉勾网上Java vs PHP

step3:将爬取的内容,导入数据库中,本次爬取使用的是开源postgresql数据库。

代码部分:

#!/usr/bin/env python

#coding:utf8

import urllib2

import requests

import json

import psycopg2

import re

import time

import codecs

import os

import traceback

from bs4 import BeautifulSoup

def writeLogs(filename,contents):

f=open(filename,’a’)

f.write(contents)

f.close()

def crawler_lagou():

city_ls=[‘杭州’,’北京’]

page_ls=range(1,31)

job_ls=[‘Java’,’PHP’]

for job_city in city_ls:

for job in job_ls:

for page in page_ls:

try:

url=r’https://www.lagou.com/zhaopin/’+job+’/’

para={‘city’:job_city,’px’:’default’,’kd’:job,’pn’:page}

print para

time.sleep(1)

html_content=requests.post(url,para).text

soup=BeautifulSoup(html_content,’lxml’)

#当前城市

city=soup.find(‘a’,class_=”current_city current”).text

city=[city]*15

#职位名称

job_name=soup.find_all(‘div’,class_=’p_top’)

job_name=[i.find(‘a’,class_=”position_link”).find(‘h2’).text for i in job_name if i.find(‘a’,class_=”position_link”)]

#薪水

salary=soup.find_all(‘div’,class_=’li_b_l’)

salary=[i.find(‘span’,class_=”money”).text for i in salary if i.find(‘span’,class_=”money”)]

#print salary,len(salary)

#经验

experience = soup.find_all(‘div’,class_=’li_b_l’)

experience=[i.text for i in experience if i.find(‘span’,class_=”money”)]

experience=[i.split(‘\n’)[2] for i in experience]

#公司名称

company=soup.find_all(‘div’,class_=”company_name”)

company=[i.find(‘a’,target=”_blank”).text for i in company if i.find(‘a’,target=”_blank”)]

#公司性质

industry=soup.find_all(‘div’,class_=”industry”)

industry=[i.text.strip() for i in industry]

sql=’insert into crawler.lagou_job_zh(city,job_name,salary,experience,company,industry) values (%s,%s,%s,%s,%s,%s)’

param=zip(city,job_name,salary,experience,company,industry)

cur.executemany(sql,param)

except:

print ‘{0}爬取失败!’.format(para)

continue

if __name__==’__main__’:

conn=psycopg2.connect(host=’10.0.21.227′,port=’5432′,database=’sample_db’,user=’postgres’,password=’OOoo0000′)

cur=conn.cursor()

try:

crawler_lagou()

conn.commit()

cur.close()

conn.close()

print ‘程序执行成功!’

except Exception,e:

print ‘程序执行发生异常:{0}!’.format(e)

conn.rollback()

cur.close()

conn.close()

filename=r’lagou.log’

content = ‘-‘*30 + time.strftime(‘%Y-%m-%d %H:%M:%S’) + ‘-‘*30 + ‘\n’

writeLogs(filename,content)

f=open(filename,’a’)

traceback.print_exc(file=f)

f.flush()

f.close()

最终数据库数据:

拉勾网上Java vs PHP

step4:数据可视化

数据可视化部分,因为python的matplotlib包的还没入门,而R的可视化手段更加熟悉也更加灵活,我选择用的R进行可视化。

需要注意的是,以下分析结论的大前提是北京、杭州地区的Java、PHP职位比较,数据来源仅限于拉勾网。

4.1 杭州 vs 北京

4.1.1 起步价比较

拉勾网上Java vs PHP

从上图分布可以看出,北京的薪酬的起步价明显都集中在15k,而杭州地区很奇怪有两个峰值,一个集中在10k,一个集中在15k,可以思考这是不是杭州地区的java和php的起步价存在显著差异引起的?后面会给出结论。

拉勾网上Java vs PHP

从上图可以看出,杭州的起步价四分位数明显比北京低,需要注意的是北京的第一分位数和中位数重合在15K的位置上,验证了上面的直方图结论,说明北京对15这个起步价的得到了广泛的认可,从侧面反映出15是Java、PHP工程师在北京的温饱线,哈哈~

4.1.2 天花板比较

拉勾网上Java vs PHP

从上图可以看出来,北京薪酬的天花板主要集中在20K以上,而杭州的天花板很显然集中在20k以下,所以如果你在杭州已经拿了20,如果还想拿更多,那就去北京吸雾霾吧~

4.2 Java vs PHP

4.2.1 起步价比较

拉勾网上Java vs PHP

从上图分布的集中趋势可以看出,不论是Java还是PHP,起步价都是集中在15左右,没有很显著的差异。

拉勾网上Java vs PHP

从上图四分位数可以看出,Java和PHP薪酬的起步价的分布无明显差异。

4.2.2 天花板比较

拉勾网上Java vs PHP

从上图天花板价分布来看,Java和PHP天花板都集中在20-30之间。

拉勾网上Java vs PHP

拉勾网上Java vs PHP

从小提琴图和分位数来看,从天花板价格来看,Java的还是要高于PHP。

4.3 城市与job

4.3.1 起步价比较

拉勾网上Java vs PHP

从上图可以看出,北京的java和PHP起步价无显著差异,但是杭州的Java和PHP确实存在显著差异,杭州的Java起步价明显高于PHP,这也回答了前面的第一个问题。

4.3.2 天花板比较

拉勾网上Java vs PHP

从上图看来,北京的java和PHP天花板无显著差异,但是杭州的Java天花板明显高于PHP。所以,在杭州的同学,如果你还在犹豫学Java还是PHP,果断入手Java吧~

转载请注明:PHP学习 » 拉勾网上Java vs PHP

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址