[Python2.7]爬58同城職位信息存入txt文件中

#!/usr/bin/python
#-*-coding:UTF-8-*-

def SearchJob(City,Jobs):
    import urllib,re,os,time,sys
    #搜索主網址
    UrlMainHtml='http://'+City+'.58.com/job/?key='+Jobs+'&final=1&jump=1'
    MainHtmlRead=urllib.urlopen(UrlMainHtml).read()
    #正則表達式獲取搜索結果數量
    ReResultCount=re.compile('<span class="operate_txt">共 <i>(.*?)</i> 條結果</span>')
    if len(ReResultCount.findall(MainHtmlRead))>0:
        ResultCount=ReResultCount.findall(MainHtmlRead)[0]
    else:
        print InputJob()
    #正則表達式獲取搜索結果總頁數
    RePageCount=re.compile('<span class="total_page">(.*?)</span>')
    PageCount=int(RePageCount.findall(MainHtmlRead)[0])
    #定義輸出結果
    JobOutput=''
    #輸出先前顯示內容
    print '共搜索到職位 '+ResultCount+' 條,共 '+str(PageCount)+' 頁,以下是搜索結果,請稍候...'+\
          '\n#############################################'
    #獲取各頁內容
    for Page in range(1,PageCount+1):
        #搜索每一頁
        UrlPageHtml=UrlMainHtml.split('?')[0]+'pn'+str(Page)+'/?'\
                     +UrlMainHtml.split('?')[1]
        PageHtmlRead=urllib.urlopen(UrlPageHtml).read()
        #正則表達式獲取當前頁職位結果
        ReJobCount=re.compile('<li class="job_item clearfix"(.*?)</li>')
        JobCount=len(ReJobCount.findall(PageHtmlRead))
        #獲取每條結果        
        for Job in range(JobCount):
            #獲取當前職位信息
            JobContent=ReJobCount.findall(PageHtmlRead)[Job]
            #獲取當前職位內容
            ReJob_Content=re.compile('<span class=(.*?)</span>')
            Job_Name=ReJob_Content.findall(JobContent)[1].replace('"name">','')
            Job_Address=ReJob_Content.findall(JobContent)[0].replace('"address" > ','')\
                         .replace('"address yidi" data-text="','')\
                         .replace('" > ','/')
            Job_Cate=ReJob_Content.findall(JobContent)[2].replace('"cate">','')
            Job_Xueli=ReJob_Content.findall(JobContent)[3].replace('"xueli">','')
            Job_Jingyan=ReJob_Content.findall(JobContent)[4].replace('"jingyan">','')
            try:
                Job_Sign=ReJob_Content.findall(JobContent)[5].replace('"sign">','')
            except:
                next
            #獲取當前職位工資
            ReJob_Money=re.compile('<p class="job_salary">(.*?)</i>')
            Job_Money=ReJob_Money.findall(JobContent)[0].replace('<i class="unit">','')
            #獲取當前崗位福利
            ReJob_Welfare=re.compile('<div class="job_wel clearfix">(.*?)   </div>')
            if len(ReJob_Welfare.findall(JobContent))>0:
                Job_Welfare=ReJob_Welfare.findall(JobContent)[0]\
                             .replace('</span>   <span>','、')\
                             .replace('  <span>','')\
                             .replace('</span>','')
            else:
                Job_Welfare='未提供'
            #獲取當前職位發佈公司
            ReJob_Company=re.compile('title="(.*?)">')
            Job_Company=ReJob_Company.findall(JobContent)[0]
            #獲取當前職位網址
            ReJob_Url=re.compile('<a href="(.*?) target="_blank"')
            Job_Url=ReJob_Url.findall(JobContent)[0].replace("'",'')
            #輸出結果
            JobOutput=JobOutput+\
                       '\n職位名稱:'+Job_Name+\
                       '\n崗位類別:'+Job_Cate+\
                       '\n所在區域:'+Job_Address+\
                       '\n最低學歷:'+Job_Xueli+\
                       '\n工作經驗:'+Job_Jingyan+\
                       '\n提供薪水:'+Job_Money+\
                       '\n崗位福利:'+Job_Welfare+\
                       '\n發佈公司:'+Job_Company+\
                       '\n發佈日期:'+Job_Sign+\
                       '\n職位鏈接:'+Job_Url+'\n'
        print '執行進度:第 '+str(Page)+' 頁已完成'
            
    State=raw_input('全部內容已搜索完成,是否另存爲txt文件(Y/N):')
    if State=='Y' or State=='y':
        #將搜索結果存入txt文件中
        Path=os.getcwd()+'/['+City+']'+Jobs+'職位信息.txt'
        FileName=open(Path,'w')
        FileName.write(JobOutput)
        FileName.close()
        print '職位搜索已完成,txt文件保存至\n'+Path+'\n請及時查看'
        return InputJob()
    else:
        return InputJob()

def InputJob():
    print '\n#############################################'
    City=raw_input('請輸入查詢城市的拼音:')
    Job=raw_input('請輸入查詢職位的名稱(中文):')
    return SearchJob(City,Job)

print InputJob()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章