招聘需求分析(爬蟲+詞云)

咳咳 作為一個(gè)大三的人 正在很努力地想找一份工作 那么究竟要掌握什么樣的技能才能找到工作呢 ? 瞎逼逼 肯定是不行的 所以我打開了 百度


image.png

然后 隨便找了個(gè)招聘網(wǎng)站點(diǎn)了進(jìn)去


image.png

就它吧
接著 在職位搜索哪里 填進(jìn)去相關(guān)信息
image.png

image.png

就跳出來 一堆工作了 隨便點(diǎn)進(jìn)去一個(gè)


image.png

天貓美工 就能從任職要求里 看到到底需要什么才能成功任職了
下面就是發(fā)揮我們的爬蟲能力 不管他是啥 先把他爬下來再說 分詞什么的 我們一點(diǎn)點(diǎn)做
先放代碼

from urllib import request
import time
from bs4 import BeautifulSoup
if __name__=="__main__":
    q = open("url.txt","rt")
    f = open('dataaa.txt','wt')
    num = 0
    for tar_url in q:
        head={ }
        head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'
        try:
            http_req = request.Request(url=tar_url,headers=head)
            http_response = request.urlopen(http_req)
            http_content = http_response.read().decode()
            #print(http_content)
            http_content_soup = BeautifulSoup(http_content,'lxml')
            info = http_content_soup.find_all('div',class_="compaydetail-box")
            flag = False
            try:
                for i in info[0]:
                    try:
                        text = i.text
                        if flag :
                            f.write(text)
                            f.write("\n")
                        if(text=="任職要求:" or text=="任職要求" or text=="崗位要求:" or text=="崗位要求"
                           or text=="任職資格" or text=="任職資格:" or text=="要求" or text=="要求:"
                           or text=="職位要求:" or text=="職位要求"):
                            flag = True
                            num += 1
                            f.write(str(num))
                            f.write("\n")
                            print("over")
                    except:
                        continue
            except:
                continue
            time.sleep(0.1)
        except:
            continue
    f.close()

url是用來存放當(dāng)前頁面的網(wǎng)址的 也就是我們?nèi)绾蔚秸衅疙撁娴姆椒?這個(gè)我們放到后面來講
dataaa呢 使用存放招聘需求的也就是 我們需要分詞的句段

好的 接下來將代碼 我是用的bs4庫 那就先看這個(gè)屬于那個(gè)div塊

image.png

經(jīng)過重重盤查 發(fā)現(xiàn)這段 屬于 class="tab-inner-cont"
嗯 好的 那就先到這個(gè)塊 但是隨后我就發(fā)現(xiàn)如果把這個(gè)設(shè)為關(guān)鍵字 根本沒有任何匹配內(nèi)容
那就先看看 .read()到什么東西 如果我們把class = "tab_inner-cont" 作為搜索條件 去進(jìn)行文本搜索 就會(huì)發(fā)現(xiàn) 同樣匹配不到任何內(nèi)容 嗯 那就說 html上的內(nèi)容和我們r(jià)equest的內(nèi)容根本不一不一樣 那自然是以 我們r(jià)equest的內(nèi)容為準(zhǔn)
于是 我把.read()到的東西 先開了個(gè)記事本 然后 進(jìn)行搜索 “任職要求” 就發(fā)現(xiàn)了
原來是 在這個(gè)塊里
'div',class_="compaydetail-box"
那么 我們只要設(shè)置這個(gè)為匹配的關(guān)鍵屬性 就能成功獲得數(shù)據(jù)

接著是判斷任職要求 我發(fā)現(xiàn)他是把所有的行都設(shè)為了 <p> </p>
那遍歷我們得到的數(shù)組 如果 發(fā)現(xiàn)滿足要求 就說明 之后所有的內(nèi)容 都是我們要求的任職條件了


但是呢 如果 你打開多個(gè)頁面 就會(huì)發(fā)現(xiàn)他對(duì)任職條件的描述 不一定都命名為 任職要求 也有叫崗位要求的 也有任職資格的 這里 我翻了一頁60個(gè)左右 整合了一下 就以我if中的判斷條件為依據(jù)開始 爬取了

需要注意的是 我們爬到的網(wǎng)址可能過期 和 可能根本沒有這個(gè)class = "compaydetail-box"塊
所以要放置幾個(gè)異常拋擲 并且我感覺這個(gè)網(wǎng)站對(duì)爬取速度也有要求 所以設(shè)置了sleep時(shí)間


接下來 就將第二部分 url的爬取
同樣 先放代碼

from urllib import request
from bs4 import BeautifulSoup

if __name__=="__main__":
    f = open("url.txt","wt")
    for i in range(1,91):
        url_base="http://sou.zhaopin.com/jobs/searchresult.ashx?bj=160000&jl=%E4%B8%8A%E6%B5%B7&sm=0&isfilter=0&fl=538&isadv=0&sg=44b41480a5814a11b14c9379449b7f68&p="
        url = url_base+str(i)
        head={}
        head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'
        html_req = request.Request(url=url,headers=head)
        html_response = request.urlopen(html_req)
        html_content = html_response.read().decode()
        html_content_soup = BeautifulSoup(html_content,"lxml")
        url_list = html_content_soup.find_all("td",class_="zwmc")
        num = 1
        for url in url_list:
            #print(str(num))
            #print(url)
            #print(url.a.get("href"))
            f.write(url.a.get("href"))
            f.write("\n")
    #           <table cellpadding="0" cellspacing="0" width="853" class="newlist">
    f.close()
image.png

所有的招聘有90個(gè)頁面 然后仔細(xì)觀察這個(gè)90個(gè)url的網(wǎng)址 就會(huì)發(fā)現(xiàn)
http://sou.zhaopin.com/jobs/searchresult.ashx?bj=160000&in=210500%3b160400%3b160000%3b160500%3b160200%3b300100%3b160100%3b160600&jl=%E4%B8%8A%E6%B5%B7&sm=0&kt=2&isfilter=0&fl=538&isadv=0&sg=f8cf4a43df6b46ce80c76044a5f1822b&p=1


http://sou.zhaopin.com/jobs/searchresult.ashx?bj=160000&in=210500%3b160400%3b160000%3b160500%3b160200%3b300100%3b160100%3b160600&jl=%E4%B8%8A%E6%B5%B7&sm=0&kt=2&isfilter=0&fl=538&isadv=0&sg=f8cf4a43df6b46ce80c76044a5f1822b&p=2

image.png

只有這個(gè) p不一樣 那么 很容易 只要寫一個(gè) 循環(huán)語句 就能從1到90了
然后 接著分析 div塊


image.png

我們只要點(diǎn)擊 這個(gè)子串 就到轉(zhuǎn)向招聘頁面 那么 一定有一個(gè) href 指向招聘頁面


image.png

好的 我們根據(jù)頁面的分布 找到了對(duì)應(yīng)的代碼塊 接著只要將這個(gè)找到這個(gè)小塊里的對(duì)應(yīng)的href就可以了
我找的是
url_list = html_content_soup.find_all("td",class_="zwmc")

找到之后 將他write到url中 留給 第一部分解決


下面是第三部分分詞

import jieba
if __name__=="__main__":
    q = open("dataaa.txt", "rt")
    f = open('divide-text.txt', 'wt')
    file_path = "stopwords.txt"
    stopwords = [line.strip() for line in open(file_path, "r").readlines()]
    for text in q:
        word_list = jieba.cut(text, cut_all=False, HMM=True)
        for word in word_list:
            if word in stopwords:
                continue
            if len(word) > 1:
                f.write(word + " ")
        f.write("\n")
    f.close()

stopwords是停用詞表 根據(jù)多次詞云返回 設(shè)置停用詞表這個(gè)沒有什么好說的


from wordcloud import WordCloud
import matplotlib.pyplot as plt
f = open("divide-text.txt","rt")
text = f.read()
font_path = "C:\Windows\Fonts\simfang.ttf"
wc = WordCloud(font_path=font_path,background_color="white",max_words=80,width=1000,height=860,margin=2)
wc.generate(text)
plt.figure()
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file("fourth.png")

這里要注意的是 中文詞云屬性的設(shè)置 font_path 設(shè)置中文的字體 如果不設(shè)置的話 就出現(xiàn)了 迷之方框里面什么都沒有 能看到的字 只有幾個(gè)英文 background_color如同字面意思一般是背景顏色 max_words 字面意思 最大單詞數(shù)量 = V = 后面是圖片大小的一般設(shè)置

最后四張圖片 很遺憾的是 第三次詞云的制作 我忘記改代碼 導(dǎo)致被覆蓋了 QAQ


第一次

很明顯能夠看出來 礁击。。扛或。瘸彤。 加了許多沒什么用的詞語 加入停用詞表


第二次

少了很多 但是依舊沒有 繼續(xù)加入停用詞表
第三次

這么一看 似乎差不多了 但是其實(shí)是... ...第四次的 也就是說 中間還有一次 停用詞表的更新


第四次

小結(jié):唔 其實(shí)即使是第四次詞云也沒有達(dá)到我原本的打算 我原打算 這將會(huì)是一張全都是技術(shù)名詞的詞云 現(xiàn)在大部分全是虛的品質(zhì) 爬取到的詞條也僅僅接近5千多條 離2w條還差的很遠(yuǎn)
還是要繼續(xù)學(xué)習(xí)啊啊啊啊啊啊啊啊啊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佩脊,一起剝皮案震驚了整個(gè)濱河市验庙,隨后出現(xiàn)的幾起案子润梯,更是在濱河造成了極大的恐慌过牙,老刑警劉巖甥厦,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異寇钉,居然都是意外死亡刀疙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門扫倡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谦秧,“玉大人,你說我怎么就攤上這事撵溃【卫穑” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵缘挑,是天一觀的道長(zhǎng)集歇。 經(jīng)常有香客問我,道長(zhǎng)语淘,這世上最難降的妖魔是什么诲宇? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮惶翻,結(jié)果婚禮上焕窝,老公的妹妹穿的比我還像新娘。我一直安慰自己维贺,他們只是感情好它掂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溯泣,像睡著了一般虐秋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垃沦,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天客给,我揣著相機(jī)與錄音,去河邊找鬼肢簿。 笑死靶剑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的池充。 我是一名探鬼主播桩引,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼收夸!你這毒婦竟也來了坑匠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤卧惜,失蹤者是張志新(化名)和其女友劉穎厘灼,沒想到半個(gè)月后夹纫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡设凹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年舰讹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闪朱。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡月匣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出监透,到底是詐尸還是另有隱情,我是刑警寧澤航唆,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布胀蛮,位于F島的核電站,受9級(jí)特大地震影響糯钙,放射性物質(zhì)發(fā)生泄漏粪狼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一任岸、第九天 我趴在偏房一處隱蔽的房頂上張望再榄。 院中可真熱鬧,春花似錦享潜、人聲如沸困鸥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疾就。三九已至,卻和暖如春艺蝴,著一層夾襖步出監(jiān)牢的瞬間猬腰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工猜敢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姑荷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓缩擂,卻偏偏與公主長(zhǎng)得像鼠冕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胯盯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 做淘寶真的要刷單么供鸠?那些所謂的七天螺旋,如果你一個(gè)新開的店陨闹,沒權(quán)重沒流量楞捂,不刷單哪來的螺旋給你薄坏? 淘寶大環(huán)境下,小...
    我是盼盼呢閱讀 9,742評(píng)論 1 16
  • 本文實(shí)現(xiàn)拉勾網(wǎng)的爬蟲寨闹,抓取招聘需求胶坠,統(tǒng)計(jì)出的詞頻前70的關(guān)鍵詞,當(dāng)然數(shù)量可以自己定繁堡,以深圳市的python招聘崗位...
    謙面客閱讀 1,789評(píng)論 3 12
  • 常用概念: 自然語言處理(NLP) 數(shù)據(jù)挖掘 推薦算法 用戶畫像 知識(shí)圖譜 信息檢索 文本分類 常用技術(shù): 詞級(jí)別...
    御風(fēng)之星閱讀 9,207評(píng)論 1 25
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理沈善,服務(wù)發(fā)現(xiàn),斷路器椭蹄,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • 本文章來自【知識(shí)林】 Git是一個(gè)版本管理工具闻牡,類似但優(yōu)越于CVS、SVN等绳矩,具體的好處在使用過程自然能有所體會(huì)罩润。...
    鐘述林閱讀 770評(píng)論 0 0