(新手)Python爬取智联招聘岗位信息并生成词云图

首先爬取岗位标签


image.png

1.打开岗位页


image.png

2.找到信息存放网址(代码中的"web")


image.png
import re
import urllib.request as urlrequest
web = 'https://fe-api.zhaopin.com/c/i/sou?pageSize=90&cityId=635&salary=0,0&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86&kt=3&=0&at=2ae1997aa6354964ac078481df22884c&rt=69444b28499d413094f94e06a6b4b161&_v=0.17798550&userCode=1036018570&x-zp-page-request-id=02072f79a0a64e619abfc5b21dc61a82-1558333624421-738392'
crawl_content = urlrequest.urlopen(web).read().decode('utf8')
#print(crawl_content)
sr=str(crawl_content)

#读取岗位页


with open("tag.txt","w",encoding='utf8') as outputfile:   #创建txt 为爬取的数据做准备
    pattern1=re.compile(r'"extractSkillTag":\[.*?]')      #正则匹配想要的内容1
    rs1=re.findall(pattern1,sr)                            
    i1=0
    for tag in rs1:                                      #输出每一个指定爬取的内容 并存档
        #print(rs1[i1])
        outputfile.write(rs1[i1]+"\n")
        i1=i1+1
        

    pattern2=re.compile(r'\\"skill\\":\[.*?]')          #正则匹配想要的内容2
    rs2=re.findall(pattern2,sr)
    i2=0
    for skill in rs2:
        #print(rs2[i2].replace("\\",""))
        outputfile.write(rs2[i2]+"\n")
        i2=i2+1
        
    pattern3=re.compile(r'"extractNormalizedTag":\[.*?]')  #正则匹配想要的内容3
    rs3=re.findall(pattern3,sr)
    i3=0
    for tag in rs3:
        #print(rs3[i3])
        outputfile.write(rs3[i3]+"\n")
        i3=i3+1
        

岗位详情页爬取岗位要求


image.png

1.找到html中内容的位置


image.png
import re
import urllib.request as urlrequest
import bs4
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
web = 'https://fe-api.zhaopin.com/c/i/sou?pageSize=90&cityId=635&salary=0,0&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86&kt=3&=0&at=2ae1997aa6354964ac078481df22884c&rt=69444b28499d413094f94e06a6b4b161&_v=0.17798550&userCode=1036018570&x-zp-page-request-id=02072f79a0a64e619abfc5b21dc61a82-1558333624421-738392'
crawl_content = urlrequest.urlopen(web).read().decode('utf8')                #读取岗位页
#print(crawl_content)
p=re.compile(r'https://jobs.zhaopin.com/.*?\.htm')                             #把岗位页的详情岗位链接爬取下来
rs=p.findall(crawl_content)
with open("jobs_data.txt","w",encoding='utf-8') as outputfile:              #创建文件txt 以便存入数据
    for item in rs:                                                         #循环每一个岗位详情链接
        url=item                                                            
        wp = urlrequest.urlopen(url).read()                
        soup = BeautifulSoup(wp,'html.parser')                 
        #print(soup.prettify())
        rq=soup.find(class_="describtion__detail-content").get_text()      #解析html 然后找到想要内容的位置
        #print(rq)
        p = re.compile(r'岗位要求:.*|岗位职责:.*|.*要求:.*|职位描述:.*')  #匹配想要的内容
        pp=p.findall(rq)
        pa = re.compile(r'【你要做的工作】.*')
        pa1 = pa.findall(rq)
        if pa1:
            pa2=pa1[0]
            #print(pa2)
            #print(" ")
            #print("******找到岗位哪里的信息,并且变为字符串*******")
            #print(" ")

            pattern = re.compile(r'【我们想要的你】')
            pp2=pattern.sub('\n【我们想要的你】',pa2)
            #print(pp2)
            #print(" ")
            #print("******分隔任职和岗位***********")
            #print(" ")    

            pattern = re.compile(r'【我们给你的】.*')
            pp2=pattern.sub('',pp2)
            #print(pp2)
            #print("***********去除多余的*********")

            pattern = re.compile(r'\d、|\d\.')
            bb=pattern.sub('\n\t - ',pp2)
            #print(bb)
            #print(" ")
            #print("******把所有的数字符号隔行美观***")
            #print(" ")
            outputfile.write(bb+"\n")
        if pp:
            pp1=pp[0]
            #print(pp1)
            #print(" ")
           # print("******找到岗位哪里的信息 并且变为字符串*******")
            #print(" ")

            pattern = re.compile(r'任职要求:|任职资格:|岗位职责:')
            pp2=pattern.sub('\n任职要求:',pp1)
           # print(pp2)
           # print(" ")
           # print("******分隔任职和岗位***********")
           # print(" ")

            pattern = re.compile(r'\d、|\d\.')
            bb=pattern.sub('\n\t - ',pp2)
            #print(bb)
            #print(" ")
            #print("******把所有的数字符号隔行美观***")
            #print(" ")
            outputfile.write(bb+"\n")
        else:
                ## 没有文字提示的时候    
            p1 = re.compile(r'\d、|\d.')
            bb=pattern.sub('\n\t - ',rq)
            #print(bb)
            outputfile.write(bb+"\n")


生成词云图


image.png
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
file=open("tag.txt",encoding='utf-8').read()           #打开读取文档
cw=jieba.cut(file)                                     #分词
result = " ".join(cw)                                  #把词语以空格连接在一起
wc = WordCloud(                                     #生成云图
    font_path = "simhei.ttf",
    background_color='white',   #背景颜色
    width=1000,
    height=1000,
    max_words=500,
    stopwords=["经理","产品","extractSkillTag","skill","extractNormalizedTag"]
)
wc.generate(result)
wc.to_file('tag_ph.png')    #图片保存

#5.显示图片
plt.figure('tag_ph')   #图片显示的名字
plt.imshow(wc)  
#plt.imshow()函数负责对图像进行处理,并显示其格式,作用:将一个image显示在二维坐标轴上。  
#其后跟着plt.show()才能显示出来。
plt.axis('off')        #关闭坐标
plt.show()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容