[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()

猜你喜欢

转载自blog.csdn.net/qq_18301257/article/details/79329545