使用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+;| ','',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))
亲测可用!