This commit is contained in:
caoqianming 2020-07-24 19:10:19 +08:00
parent 1a1e7671c6
commit c5be9fdea2
3 changed files with 64 additions and 52 deletions

View File

@ -2,7 +2,7 @@ import requests
from urllib import parse from urllib import parse
from lxml import etree from lxml import etree
headers = { headers = {
'Host': 'cx.saws.org.cn', 'Host': 'cx.mem.gov.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
'Accept': 'text/plain, */*; q=0.01', 'Accept': 'text/plain, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
@ -16,8 +16,9 @@ headers = {
def getTzzs(certnum,stu_name):#特种证书(身份证号,姓名,均是字符) def getTzzs(certnum,stu_name):#特种证书(身份证号,姓名,均是字符)
certtype_code='720' certtype_code='720'
stu_name=parse.quote(parse.quote(stu_name)) stu_name=parse.quote(parse.quote(stu_name))
sessionId = eval(requests.post('http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time'] sessionId = eval(requests.post('http://cx.mem.gov.cn//cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time']
url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId print(sessionId)
url = "http://cx.mem.gov.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId
data = requests.get(url,headers=headers).text data = requests.get(url,headers=headers).text
tree = etree.HTML(data) tree = etree.HTML(data)
e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()") e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()")
@ -38,8 +39,8 @@ def getTzzs(certnum,stu_name):#特种证书(身份证号,姓名,均是字符)
def getAqzs(certnum,stu_name):#安全证书(身份证号,姓名,均是字符) def getAqzs(certnum,stu_name):#安全证书(身份证号,姓名,均是字符)
certtype_code='720' certtype_code='720'
stu_name=parse.quote(parse.quote(stu_name)) stu_name=parse.quote(parse.quote(stu_name))
sessionId = eval(requests.post('http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time'] sessionId = eval(requests.post('http://cx.mem.gov.cn/cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time']
url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult2&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId url = "http://cx.mem.gov.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult2&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId
data = requests.get(url,headers=headers).text data = requests.get(url,headers=headers).text
tree = etree.HTML(data) tree = etree.HTML(data)
e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()") e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()")
@ -55,7 +56,6 @@ def getAqzs(certnum,stu_name):#安全证书(身份证号,姓名,均是字符)
x5=[] x5=[]
for i in e5: for i in e5:
x5.append(i.xpath("string(.)")) x5.append(i.xpath("string(.)"))
print(e6)
for i in range(len(e1)): for i in range(len(e1)):
cdata.append({'姓名':e1[i],'性别':e2[i],'资格类型':e3[i],'单位类型':e4[i],'发证机关':x5[i],'应复审日期':e7[i].strip(),'有效期开始时间':e8[i].strip(),'有效期结束时间':e9[i].strip(),'初领日期':e6[i].strip(),'url':url}) cdata.append({'姓名':e1[i],'性别':e2[i],'资格类型':e3[i],'单位类型':e4[i],'发证机关':x5[i],'应复审日期':e7[i].strip(),'有效期开始时间':e8[i].strip(),'有效期结束时间':e9[i].strip(),'初领日期':e6[i].strip(),'url':url})

View File

@ -12,6 +12,7 @@ from sklearn import linear_model
from django.db.models import Sum from django.db.models import Sum
from django.conf import settings from django.conf import settings
from .safespider import getTzzs, getAqzs from .safespider import getTzzs, getAqzs
import time
dirname = settings.BASE_DIR +'/safesite/' dirname = settings.BASE_DIR +'/safesite/'
def getcs(companyid):#获取公司相关参数设置 def getcs(companyid):#获取公司相关参数设置
@ -366,30 +367,30 @@ def checktask():
def updateTzzs(): def updateTzzs():
for x in Socertificate.objects.all(): for x in Socertificate.objects.all():
data = getTzzs(x.cardnum,x.realname) data = getTzzs(x.cardnum,x.realname)
data1 = [] time.sleep(10)
if data: if data:
for i in data: for i in data:
if i['操作项目'] not in data1: updated_values={
updated_values={ 'realname':i['姓名'],
'realname':i['姓名'], 'gender':i['性别'],
'gender':i[''], 'zylb':i['作业类'],
'zylb':i['作业类别'], 'czxm':i['操作项目'],
'czxm':i['操作项目'], 'fzjg':i['发证机关'],
'fzjg':i['发证机关'], 'ccfzrq':i['初次发证日期'] if i['初次发证日期'] else None,
'ccfzrq':i['初次发证日期'] if i['初次发证日期'] else None, 'yfsrq':i['应复审日期'] if i['应复审日期'] else None,
'yfsrq':i['应复审日期'] if i['应复审日期'] else None, 'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None,
'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None, 'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None,
'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None, 'sjfssj':i['实际复审时间'] if i['实际复审时间'] else None,
'sjfssj':i['实际复审时间'] if i['实际复审时间'] else None, 'user':x.user,
} 'usecomp':x.usecomp
try: }
updated_values['zszt'] = guoqi(i['应复审日期']) try:
except: updated_values['zszt'] = guoqi(i['应复审日期'])
pass except:
obj, created = Socertificate.objects.update_or_create( pass
cardnum=x.cardnum, czxm=i['操作项目'], defaults=updated_values) obj, created = Socertificate.objects.update_or_create(
data1.append(i['操作项目']) cardnum=x.cardnum, czxm=i['操作项目'], defaults=updated_values)
else: try:
obj = Socertificate.objects.get(cardnum=x.cardnum, czxm=i['操作项目']) obj = Socertificate.objects.get(cardnum=x.cardnum, czxm=i['操作项目'])
if obj.yxqjssj.strftime('%Y-%m-%d')<i['有效期结束时间']: if obj.yxqjssj.strftime('%Y-%m-%d')<i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
@ -402,6 +403,10 @@ def updateTzzs():
except: except:
pass pass
obj.save() obj.save()
except:
obj = Socertificate(**updated_values)
obj.save()
def guoqi(x): def guoqi(x):
now = datetime.datetime.now() now = datetime.datetime.now()
now1 = datetime.datetime.now() + datetime.timedelta(days=180) now1 = datetime.datetime.now() + datetime.timedelta(days=180)
@ -416,30 +421,29 @@ def guoqi(x):
def updateAqzs(): def updateAqzs():
for x in Safecert.objects.all(): for x in Safecert.objects.all():
data = getAqzs(x.cardnum,x.realname) data = getAqzs(x.cardnum,x.realname)
data1 = [] time.sleep(10)
if data: if data:
for i in data: for i in data:
if i['资格类型'] not in data1: updated_values={
updated_values={ 'realname':i['姓名'],
'realname':i['姓名'], 'gender':i['性别'],
'gender':i['性别'], 'zglx':i['资格类型'],
'zglx':i['资格类型'], 'dwlx':i['单位类型'],
'dwlx':i['单位类型'], 'fzjg':i['发证机关'],
'fzjg':i['发证机关'], 'yfsrq':i['应复审日期'] if i['应复审日期'] else None,
'ccfzrq':i['初领日期'] if i['初领日期'] else None, 'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None,
'yfsrq':i['应复审日期'] if i['应复审日期'] else None, 'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None,
'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None, 'user':x.user,
'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None, 'usecomp':x.usecomp
} }
try: try:
updated_values['zszt'] = guoqi(i['有效期结束时间']) updated_values['zszt'] = guoqi(i['有效期结束时间'])
except: except:
pass pass
obj, created = Safecert.objects.update_or_create( obj, created = Safecert.objects.update_or_create(
cardnum=x.cardnum, zglx=i['资格类型'], dwlx=i['单位类型'], defaults=updated_values) cardnum=x.cardnum, zglx=i['资格类型'], dwlx=i['单位类型'], defaults=updated_values)
data1.append(i['资格类型']) try:
else: obj = Safecert.objects.get(cardnum=x.cardnum, zglx=i['资格类型'], dwlx=i['单位类型'])
obj = Safecert.objects.get(cardnum=x.cardnum, czxm=i['资格类型'])
if obj.yxqjssj.strftime('%Y-%m-%d')<i['有效期结束时间']: if obj.yxqjssj.strftime('%Y-%m-%d')<i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
obj.yxqkssj = i['有效期结束时间'] if i['有效期结束时间'] else None obj.yxqkssj = i['有效期结束时间'] if i['有效期结束时间'] else None
@ -449,4 +453,8 @@ def updateAqzs():
obj.zszt = zsst obj.zszt = zsst
except: except:
pass pass
obj.save() obj.save()
except:
obj = Safecert(**updated_values)
obj.save()

View File

@ -4850,7 +4850,7 @@ def apitool(req):
for i in Partment.objects.filter(iscompany=1): for i in Partment.objects.filter(iscompany=1):
obj,created = Map.objects.get_or_create(usecomp=i,defaults={'name':'默认地图','pic':'/static/safesite/mystatic/images/snc.jpg','usecomp':i}) obj,created = Map.objects.get_or_create(usecomp=i,defaults={'name':'默认地图','pic':'/static/safesite/mystatic/images/snc.jpg','usecomp':i})
if created: if created:
print(i.partname+'建立默认地图') print(i.partname + '建立默认地图')
return JsonResponse({"code":1}) return JsonResponse({"code":1})
elif a == 'panjuan': elif a == 'panjuan':
test = ExamTest.objects.get(id=req.GET.get('test')) test = ExamTest.objects.get(id=req.GET.get('test'))
@ -4916,6 +4916,10 @@ def apitool(req):
num = num + 1 num = num + 1
print(str(num) + obj.examtest.name + obj.user.name + '得分' + str(score)) print(str(num) + obj.examtest.name + obj.user.name + '得分' + str(score))
return JsonResponse({"code":1}) return JsonResponse({"code":1})
elif a == 'correct_aqzs':
from .tasks import updateAqzs
updateAqzs()
return JsonResponse({"code":1})