资源简介
这是一个爬取知网的社科基金项目的代码,用python语言写的,这个代码参考了其他人写的代码。最终能够实现爬取社科基金项目信息的功能,在pycharm3.6下开发,需要替换成你自己的浏览器的cookie。
代码片段和文件信息
#web_url = ‘http://kns.cnki.net/kns/detail/detail.aspx?QueryID=0&CurRec=2&DbCode= CJFD&dbname=CJFDTEMP&filename=BJZY201812008&urlid=&yx=‘
import requests # 导入requests 模块
import re
import time
import xlwt #导入模块
def request(url): # 返回网页的response
# print(url)
# 这里是伪造浏览器信息,和伪造来源
user_agent = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Ch‘ \
‘rome/58.0.3029.81 Safari/537.36‘
referer = “http://kns.cnki.net/kns/brief/result.aspx?dbprefix=CJFQ“
# 这里是伪造cookie,你要从浏览器里复制出来,粘贴在这里
# 可以把里面的时间不断更新,这样能爬久一点
cookie = ‘RsPerPage=20; cnkiUserKey=9fc101c4-bc14-27ea-5eb4-f8282ca1742c; UM_distinctid=16527e5f405230-044bded10d4527-4947311e-1fa400-16527e5f4069ff; Ecp_ClientId=5180811152900249267; ASP.NET_SessionId=hbqqazmw3um3z1onutsbxb0d; SID_kns=011116; SID=011108; Ecp_session=1; LID=WEEvREcwSlJHSldRa1FhcEE0RVVzNVhyZTRSWTFraVRHOTdsUDN0bU9NWT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!; _pk_ref=%5B%22%22%2C%22%22%2C1545744171%2C%22http%3A%2F%2Fwww.cnki.net%2F%22%5D; KNS_SortType=; _pk_ses=*‘
headers = {‘User-Agent‘: user_agent
“Referer“: referer
“cookie“: cookie}
r = requests.get(url headers=headers timeout=30)
return r
wb = xlwt.Workbook()
sh = wb.add_sheet(“2003测试表“)
sh.write(0 0 ‘序号‘)
sh.write(0 1 ‘题名‘)
sh.write(0 2 ‘作者‘)
sh.write(0 3 ‘单位‘)
sh.write(0 4 ‘文献来源‘)
sh.write(0 5 ‘关键词‘)
sh.write(0 6 ‘摘要‘)
sh.write(0 7 ‘年份‘)
sh.write(0 8 ‘页码‘)
countItem = 1
told = 0
p = 1 # 这里是页数
for num in range(p p + 20):
# 这里的num是页码
web_url = ‘http://nvsm.cnki.net/kns/brief/brief.aspx?curpage=%s&Records‘ \
‘PerPage=20&QueryID=0&ID=&turnpage=1&tpagemode=L&dbPref‘ \
‘ix=CJFQ&Fields=&DisplayMode=listmode&PageName=ASP.brief_‘ \
‘result_aspx&isinEn=1‘ % num # 这里的URL实现了二次加载
print(‘搜素页的URL=‘ web_url)
# 这里开始是时间控制
t = int(time.clock())
print(t / 60 ‘分钟‘)
useTime = t - told
# 如果一个周期的时间使用太短,则等待一段时间
# 主要用于防止被禁
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 = request(web_url) #
#print(r.text)
# 这里是报错的解释,能知道到底是因为什么不能继续爬了
# 一开始会看爬到的源代码,但是之后正式开始爬的时候,打印页面源代码会拉低爬虫效率
yan = re.search(r‘参数错误‘ r.text)
if yan != None:
print(“参数“)
break
yan = re.search(r‘验证码‘ r.text)
if yan != None:
print(“验证“)
break
countHtml = re.findall(r‘tle“ name=“lbPagertitle“ class=“pagertitle“> ([.$\s\S]*?)
print(re.findall(“\d+“ countHtml[0]))
countItem = int(re.findall(“\d+“ countHtml[0]))
#这里开始抓列表里每一个文献的url
#soup = re.findall(r‘
soup = re.findall(r‘<
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 一个多线程智能爬虫,爬取网站小说
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- 顶点小说单本书爬虫.py
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
评论
共有 条评论