【爬虫实战】Python爬取知网文献信息

阅读: 评论:0

【爬虫实战】Python爬取知网文献信息

【爬虫实战】Python爬取知网文献信息

引言

临近毕业季,想必很多今年毕业的朋友们最近都在焦头烂额地忙着撰写论文吧。那么如何高效地了解研究领域的热点问题,学习优秀论文解决问题的思路和方法呢?我们可以使用“知网”这个众所周知的平台来进行文献的检索与阅读。使用python可以更加有效地实现文献信息的爬取。通过快速浏览相关领域文献的基本信息,我们可以从中找出感兴趣的值得我们深入研究的文章再来进行精读,极大地提高了效率。

01 选择合适的待爬取网站

我们日常使用知网的网址为:/。但是该网址难以获取网页源代码。右键“查看网页源代码”后会跳转到如下的页面:

但是,我们发现可以从知网空间获取网页源代码。知网空间是知网的一个搜索入口,常用于文献的快速检索,网址为:/

02 目标页面分析

以“金融科技”为例,点击搜索,对页面进行分析,按F12选择Fetch/XHR。我们找到了如下发送的请求,且发现是以post方式发送。

且携带的参数为:‘searchType’: ‘MulityTermsSearch’, ‘Article Type’: ‘’, ‘ReSearch’: ‘’, ‘ParamIsNullOrEmpty’: ‘false’, ‘Islegal’: ‘false’, ‘Content’: ‘金融科技’, ‘Theme’: ‘’, ‘Title’: ‘’, ‘KeyWd’: ‘’, ‘Author’: ‘’, ‘SearchFund’: ‘’, ‘Originate’: ‘’, ‘Summary’: ‘’, ‘PublishTimeBegin’: ‘’, ‘PublishTimeEnd’: ‘’, ‘MapNumber’: ‘’, ‘Name’: ‘’, ‘Issn’: ‘’, ‘Cn’: ‘’, ‘Unit’: ‘’, ‘Public’: ‘’, ‘Boss’: ‘’, ‘FirstBoss’: ‘’, ‘Catalog’: ‘’, ‘Reference’: ‘’, ‘Speciality’: ‘’, ‘Type’: ‘’, ‘Subject’: ‘’, ‘SpecialityCode’: ‘’, ‘UnitCode’: ‘’, ‘Year’: ‘’, ‘AcefuthorFilter’: ‘’, ‘BossCode’: ‘’, ‘Fund’: ‘’, ‘Level’: ‘’, ‘Elite’: ‘’, ‘Organization’: ‘’, ‘Order’: ‘1’, ‘Page’: ‘1’, ‘PageIndex’: ‘’, ‘ExcludeField’: ‘’, ‘ZtCode’: ‘’, ‘Smarts’: ‘’,

03 获取相应内容


base_url = ''
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',}def get_page_text(url, headers, search_word, page_num):data = {'searchType': 'MulityTermsSearch','ArticleType': '','ReSearch': '','ParamIsNullOrEmpty': 'false','Islegal': 'false','Content': search_word,'Theme': '','Title': '','KeyWd': '','Author': '','SearchFund': '','Originate': '','Summary': '','PublishTimeBegin': '','PublishTimeEnd': '','MapNumber': '','Name': '','Issn': '','Cn': '','Unit': '','Public': '','Boss': '','FirstBoss': '','Catalog': '','Reference': '','Speciality': '','Type': '','Subject': '','SpecialityCode': '','UnitCode': '','Year': '','AcefuthorFilter': '','BossCode': '','Fund': '','Level': '','Elite': '','Organization': '','Order': '1','Page': str(page_num),'PageIndex': '','ExcludeField': '','ZtCode': '','Smarts': '',}response = requests.post(url=url, headers=headers, data=data)page_text = turn page_text

04 解析内容

这里我们运用Xpath进行解析:

代码如下:


def list_to_str(my_list):my_str = "".join(my_list)return my_strdef get_abstract(url):response = (url=url, headers=headers)page_text = ee = etree.HTML(page_text)abstract = tree.xpath('//div[@class="xx_font"]//text()')return abstractdef parse_page_text(page_text):tree = etree.HTML(page_text)item_list = tree.xpath('//div[@class="list-item"]')page_info = []for item in item_list:# 标题title = list_to_str(item.xpath('./p[@class="tit clearfix"]/a[@class="left"]/@title'))# 链接link = 'https:' +list_to_str(item.xpath('./p[@class="tit clearfix"]/a[@class="left"]/@href'))# 作者author = list_to_str(item.xpath('./p[@class="source"]/span[1]/@title'))# 出版日期date = list_to_str(item.xpath('./p[@class="source"]/span[last()-1]/text() | ./p[@class="source"]/a[2]/span[1]/text() '))# 关键词keywords = list_to_str(item.xpath('./div[@class="info"]/p[@class="info_left left"]/a[1]/@data-key'))# 摘要abstract = list_to_str(get_abstract(url=link))# 文献来源paper_source = list_to_str(item.xpath('./p[@class="source"]/span[last()-2]/text() | ./p[@class="source"]/a[1]/span[1]/text() '))# 文献类型paper_type = list_to_str(item.xpath('./p[@class="source"]/span[last()]/text()'))# 下载量download = list_to_str(item.xpath('./div[@class="info"]/p[@class="info_right right"]/span[@class="time1"]/text()'))# 被引量refer = list_to_str(item.xpath('./div[@class="info"]/p[@class="info_right right"]/span[@class="time2"]/text()'))item_info = [i.strip() for i in [title, author, paper_source, paper_type, date, abstract, keywords, download, refer, link]]page_info.append(item_info)print(page_info)return page_info

运行结果如下:

05 保存数据

这里我们将数据保存至excel表格中,并且实现,每个搜索词都在单独的一个sheet中,具体代码如下:


def write_to_excel(workbook, info,  search_word):wb = workbookworksheet1 = wb.add_worksheet(search_word)  # 创建子表worksheet1.activate()  # 激活表title = ['title', 'author', 'paper_source', 'paper_type', 'date', 'abstract', 'keywords', 'download', 'refer', 'link']  # 设置表头worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头i = 2  # 从第二行开始写入数据for j in range(len(info)):insert_data = info[j]start_pos = 'A' + str(i)# print(insert_data)worksheet1.write_row(start_pos, insert_data)i += 1return True

06 结果展示

接着我们尝试爬取搜索词为“金融科技”和“数字经济”的前5页文献。

代码运行效果如下:

生成的excel表格如下:

以上就是小编带领大家爬取知网文献信息的全过程了,需要的小伙伴快动手演练一下吧~

读者福利

如果你也对python爬虫感兴趣,并且想通过python爬虫脚本接单赚钱的话。可以试试我整理的这份Python全套学习资料,0基础入门+进阶实战,学完就可以自己在网上帮人写写爬虫脚本,接单赚米了~

需要的可以自行扫描下方SCDN官方认证二维码免费领取

资料包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、大厂面试题、Python练习题、Python实战案例源码等学习教程。带你从零基础到精通!

零基础Python学习资源介绍

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!

三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取

本文发布于:2024-02-04 21:17:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170716617859688.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:爬虫   实战   文献   信息   知网
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23