if (useTime < 120 and useTime > 10):
print(“useTime=%s” % useTime)
whiteTime = 120 - useTime
print(“等待%s秒” % whiteTime)
time.sleep(whiteTime)
told = int(time.clock())
print(t)
print(‘开始网页get请求’)
r = self.request(web_url)
这里是报错的解释,能知道到底是因为什么不能继续爬了
一开始会看爬到的源代码,但是之后正式开始爬的时候,打印页面源代码会拉低爬虫效率
yan = re.search(r’参数错误’, r.text)
if yan != None:
print(“参数”)
break
yan = re.search(r’验证码’, r.text)
if yan != None:
print(“验证”)
break
#这里开始抓列表里每一个文献的url
soup = re.findall(r’<TR([.$\s\S]*?)', r.text)
#print(soup)#测试打印
for a in soup:
print(“-”, i1)
#print(a)#测试代码
i1 += 1
name = re.search(r’_blank.*<', a)
#print(‘初次取的=’,name)#测试代码
name = name.group()[8:-1]
#print(‘第二次=’,name)#测试代码
name = re.sub(r’', ‘’, name)
#print(‘第三次=’, name) # 测试代码
name = re.sub(r’', ‘’, name)
#print(‘第四次=’, name) # 测试代码
url = re.search(r’href=.*? ', a)#将’‘看做一个子表达式,惰性匹配一次就可以了
url = url.group()
#print(‘爬取的详情页的URL=’,url)#测试代码
将爬来的相对地址,补充为绝对地址
url = “http://kns.cnki.net/KCMS/” + url[11:-2]#数字是自己数的。。。
#print(“url:%s” % url) # 这里是写代码时测试留下的print记录
#下面是参考文献详情的URL
FN = re.search(r’FileName.*?&', url)#.group()#出现错误 没有匹配!!!
if FN !=None:#测试代码
FN = re.search(r’FileName.*?&', url).group()
#print(FN)#测试代码
DN = re.search(r’DbName.*?&', url)#.group()
if DN !=None:#测试代码
DN=re.search(r’DbName.*?&', url).group()
#print(DN) #测试代码
DC = re.search(r’DbCode.*?&', url).group()
DUrl = “http://kns.cnki.net/KCMS/detail/frame/list.aspx?%s%s%sRefType=1” % (FN, DN, DC)
#print(‘DUrl=’,DUrl)#测试代码
这里打开文献详情页
R = self.request(DUrl)
#如果没有参考文献,则认为是劣质文献,不爬,转爬下一篇
isR = re.search(r’参考文献’, R.text)
if i1 == 1:
print(“没有参考文献的文章:%s” % name)
if isR == None:
continue
详情页
print(i)
print(“文章名字:%s” % name)
d = self.request(url).text
#print(‘d=’,d)#测试代码
这里是文献摘要,
summary = re.search(r’(?<=name=“ChDivSummary”>).+?(?=)', d)
summary=summary.group()
#print(‘摘要=’,summary)
type = re.search(r’“).html(”.*?"', d)
type = type.group()[9:-1]
ins = re.search(r’TurnPageToKnet(‘in’,‘.*?’', d)
if ins == None:
continue
ins = ins.group()[21:-1]
wt = re.findall(r’TurnPageToKnet(‘au’,‘.*?’', d)
writer = “”
for w in wt:
writer = writer + “,” + w[21:-1]
writer = writer[1:]
ws.write(i, 0, name) #文献名
ws.write(i, 1, writer) #作者名
ws.write(i, 2, type) #文献类别
ws.write(i, 15, num) #列表的页码
ws.write(i, 3, summary) # 摘要
ws.write(i, 16, time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(time.time()))) #记录的时间
这里是文献的关键词,最多可以记录8个关键词
kw = re.findall(r’TurnPageToKnet(‘kw’,‘.*?’', d)
tnum = 0
for tkw in kw:
tnum += 1
tkw = tkw[21:-1]
if tnum > 8:
break
ws.write(i, 3 + tnum, tkw)
这里是文献的来源基金
fund = re.search(r’TurnPageToKnet(‘fu’,‘.*?’', d)
if fund != None:
fund = fund.group()[21:-1]
ws.write(i, 11, fund)
分类号
cn = re.search(r’ZTCLS.*?</p’, d)
if cn != None:
cn = cn.group()[19:-3]
ws.write(i, 12, cn)
这是机构
jg = re.search(r’TurnPageToKnet(‘in’,‘.*?’', d)
if jg != None:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算