python爬虫51job招聘信息下载

使用python选取51Job上Java,Php,C++等7项模块进行下载
数据格式呈现如下:
java.txt:
(1):Java 南京擎天科技有限公司 南京 0.7-2万/月 职位描述: 1、负责公司自研产品应用软件的分析、设计、编码; 2
(2):Java 江苏万全集团 南京-浦口区 0.7-2万/月 岗位职责:1.3年以上JAVA开发工作经验,具备扎实的JAVA基
(3):Java 深圳前海橙色魔方信息技术有限公司 南京-雨花台区 0.8-1.5万/月 岗位要求1.参与系统的架构、设计及关键
(4):Java 北京宇天恒瑞科技发展有限公司 南京-建邺区 0.8-1.2万/月 任职资格:1.3年以上服务端开发经验;2.扎
(5):Java 南京国通智能科技有限公司 南京-建邺区 0.8-1.5万/月 1、后台java研发、java代码编写;职位要求
python.txt
(1):Python 江苏天鼎证券投资咨询有限公司 南京-建邺区 1-1.5万/月 岗位要求:1、大专及以上
(2):Python 江苏开博信息科技有限公司 南京-秦淮区 1-1.5万/月 岗位职责:1、 负责江苏银行
(3):Python 江苏盈达信息技术有限公司 南京-建邺区 0.8-1.2万/月 职位描述:一、工作职责
(4):Python 南京熙泰信息技术有限公司 南京 0.8-1万/月 1.懂go语言2.了解docker3
(5):Python 南京硅基智能科技有限公司 南京 1.5-4万/月 1、参与公司产品的整体规划、功能设计
代码:

import urllib.request
import re,time,os

def get_base_url():
    base_url1 = 'https://search.51job.com/list/070200,000000,0000,00,9,99,'
    base_url2 = '%25E5%25BC%2580%25E5%258F%2591%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,'
    base_model=['Java','Php','C++','Android','Python','Web前端开发^AWeb%25E5%2589%258D%25E7%25AB%25AF',
                '大数据开发^A%25E5%25A4%25A7%25E6%2595%25B0%25E6%258D%25AE']
    base_url=[]
    for i in base_model:
        url1=base_url1+i.split('^A')[-1]+base_url2+'1.html'
        url= base_url1+i.split('^A')[-1]+base_url2
        res = '</ul><span class="td">(.*?)</span>'
        reg = re.compile(res).findall(get_html(url1))
        num_page=re.findall('\d+',reg[0])[0]
        print(num_page)
        for j in range(1,int(num_page)+1):
            base_url.append(i.split('^A')[0]+'^A'+url+str(j)+'.html')
    return base_url


def get_html(url):
    html=urllib.request.urlopen(url).read().decode('gbk')
    return html

def get_a_links(html):
    res = '<a target="_blank" title=".*?" href="(.*?)" onmousedown="">[\s\S]*?<span class="t2"><a target="_blank"' \
          ' title="(.*?)" href="https://jobs.*?\.html">.*?</a></span>[\s\S]*?<span class="t3">(.*?)</span>' \
          '[\s\S]*?<span class="t4">(.*?)</span>[\s\S]*?</div>'
    html_link=re.compile(res).findall(html)
    return html_link

def get_job_content(html):
    res = '<div class="bmsg job_msg inbox">([\s\S]*?)<div class="mt10">'
    content = re.compile(res).findall(html)
    job_content=re.sub('\r|\n|\t|<.*?>|&#\d+;|&nbsp;','',content[0])
    return job_content

def write_to_file(content,file_name,j):
    with open(file_name+'.txt','a+',encoding="utf-8") as f:
        f.write('('+str(j)+'):'+file_name+' '+content+'\n')



if __name__ == '__main__':
    start = time.clock()
    os.chdir('C:/Users/Administrator/PycharmProjects/untitled/venv')
    j,k,m=0,0,0
    u2=[]
    for url in get_base_url():
        url_str=url.split('^A')
        lists1=get_a_links(get_html(url_str[1]))
        for i in range(len(lists1)):
            try:
                j+= 1
                m+=1
                u1=url_str[0]
                if u1!=u2 or len(u2)==0:
                    j=1
                job_content = get_job_content(get_html(list(lists1[i])[0]))
                job_contents=list(lists1[i])[1]+' '+list(lists1[i])[2]+' '+list(lists1[i])[3]+' '+job_content
                write_to_file(job_contents,url_str[0],j)
                u2 = url_str[0]
                print("Current Model:"+u2+" Finished Saved " + str(j) + " articles")
            except Exception:
                k+=1
                print('Analysis Error!!!'+str(k))
                continue
    end = time.clock()
    print('End!!!!!')
    print('success  '+str(m)+'    Error   '+str(k))
    print('Running time: %s Seconds' % (end - start))

亲测可用!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值