python爬虫采集下载中国知网《出版来源导航》论文文献下载_PDF文档_数据采集知网爬虫论文Python3

时隔一年,很久没更新博客了。今天给大家带来一个python3采集中国知网 :出版来源导航

这个是网址是中国知网的,以下代码仅限于此URL(出版来源导航)采集,知网的其他网页路径采集不一定行,大家可以试试。

在发布代码前,大家先看下下载文件数据。

以上的数据基本来源于以下图片的导航中。

主要采集栏目搜索出自己想要的文档,然后进行采集下载本地中。

以下是完整代码,在使用代码请安装好对应的包,如果是pycharm 在设置 和 控制台终端 都可以安装。需要注意的是 自己需要替换 headers 内容。

我使用的环境是:

Windows 11 64位教育版

Pycharm 2023.2.3版本

python 3.6.8 

# encoding:utf-8
import json
import random
import timeimport requests
from bs4 import BeautifulSoup
import csv
import os
import urllib.parse
"""1、excel格式,只要标题加 HTML阅读连接
2、把内容写入到WORD或者直接下载PDF 
要求:全文设置关键字新农人,爬取标题、文章链接 。就这2个内容
"""headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','Accept-Language': 'zh,zh-CN;q=0.9','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie':"请替换自己的COOKIE",'Referer': 'https://navi.cnki.net/','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'same-site','Sec-Fetch-User': '?1','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36','sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',
}def get_index(page,baseId,key_words):form_data = {'pcode': 'CCND','baseId': baseId,'where': '%28QW%25%27%7B0%7D%27%29',# 'where': '%28QW%25%27%7B0%7D%27%29','searchText': key_words,'condition': '','orderby': 'FFD','ordertype': 'DESC','scope': '','pageIndex': page,'pageSize': '20','searchType': '全文',}headers = {'Accept': '*/*',# 'Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Connection': 'keep-alive','Content-Length': '223','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Cookie': "请替换自己的COOKIE",'Host': 'navi.cnki.net','Origin': 'https://navi.cnki.net','Referer': 'https://navi.cnki.net/knavi/newspapers/NMRB/detail?uniplatform=NZKPT','Sec-Ch-Ua': '"Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24"','Sec-Ch-Ua-Mobile': '?0','Sec-Ch-Ua-Platform': '"Windows"','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0','X-Requested-With': 'XMLHttpRequest',}url = 'https://navi.cnki.net/knavi/newspapers/search/results'response = requests.post(url, headers=headers, data=form_data)html = BeautifulSoup(response.content, 'lxml')for tag in html(['thead']):tag.extract()try:content = html.find_all('table', class_="tableStyle")[0]except:print('采集完成!')else:content_tr = content.find_all('tr')for ct in content_tr:td = ct.find('td', class_="name")try:href = td.find('a')['href']except:href = ''try:name = td.find('a').textexcept:name = ''try:releaseDate = ct.find_all('td', align="center")releaseDate = [rd.text for rd in releaseDate if '-' in str(rd.text)][0]except:releaseDate = ""data = [name, releaseDate, href]saveCsv(baseIds, data)get_download_urls(href)try:pageCount = html.find('input', id="pageCount")['value']except:print('爬取完成!!!')else:page += 1print(f'正在爬取{page + 1}页')t = random.randint(1, 2)print(f'休息 {t} 秒后继续爬取')time.sleep(t)get_index(page,baseIds)def saveCsv(filename, content):"保存数据为CSV文件 list 写入"fp = open(f'{filename}.csv', 'a+', newline='', encoding='utf-8-sig')csv_fp = csv.writer(fp)csv_fp.writerow(content)fp.close()print(f'正在写入:{content}')def get_download_urls(url):response = requests.get(url, headers=headers)html = BeautifulSoup(response.content, 'lxml')title = str(html.find('h1').text).replace('/', '').replace('\\', '')dlpdf = html.find('li', class_="btn-dlpdf").find('a')['href']downfiles(dlpdf, title)def downfiles(url, filename):session = requests.Session()content = session.get(url=url, headers=headers).contentwith open(f'{baseIds}/{filename}.pdf', 'wb') as f:f.write(content)print(filename, '下载成功')def create_directory(directory):if not os.path.exists(directory):os.makedirs(directory)def text_to_urlencode(chinese_str):# 中文字符串# chinese_str = '新农人'# 将中文字符串编码为UTF-8格式chinese_bytes = chinese_str.encode('utf-8')# 将字节串转换为URL编码格式url_encoded = urllib.parse.quote(chinese_bytes, safe='/:')return url_encodedif __name__ == '__main__':# 采集网址:https://navi.cnki.net/knavi/newspapers/search?uniplatform=NZKPT# 再网址搜索 相关报纸的关键词信息data = ['标题', '日期', '内容链接']pa = 0baseIds = 'NMRB' #create_directory(baseIds)saveCsv(baseIds, data)key_words = "新农人" # 关键词key_words = text_to_urlencode(key_words)get_index(pa,baseIds,key_words)

声明:代码仅限于学习,学术研究使用,请勿用于非法用途,如有利用代码去违法犯罪,与作者无关。

不懂得请留言。不一定及时回复,但肯定会回复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取

项目场景: 问题描述 原因分析: 解决方案: 完成了批量上传功能,这插件真的很方便 于是写了个批量获取附件的js代码,我真厉害 项目场景: 活字格V9版本获取图片链接Upload 【9.0.103.0】图片上传的存储路…

操作系统(4)---虚拟机

虚拟机又叫虚拟机管理程序或者虚拟机监控程序(Virtual Machine Monitor/Hypervisor,VMM),使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器 (Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系…

C语言中各种类型指针所能访问的字节

其实学习语言的最简单的方法就是学习代码&#xff0c;所以下面来看一段代码就明白了&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int a 0x11223344;int* pa &a;char* pc &a;double* pd &a;printf("%p\n", …

数据结构——链式二叉树(2)

目录 &#x1f341;一、二叉树的销毁 &#x1f341;二、在二叉树中查找某个数&#xff0c;并返回该结点 &#x1f341;三、LeetCode——检查两棵二叉树是否相等 &#x1f315;&#xff08;一&#xff09;、题目链接&#xff1a;100. 相同的树 - 力扣&#xff08;LeetCode&a…

【干货】【常用电子元器件介绍】【电阻】(二)--敏感电阻器

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。   电子电路中除了采用普通电阻器外&#xff0c;还有一些敏感电阻器&#xff08;如热敏电阻器、压敏电阻器、光敏电阻器等&#xff09;也被广泛地应用。然而…

C# 使用 SapNwRfc 调用SAP RFC

好久没写过相关代码&#xff0c;今天又来贡献一篇 C# 使用 SapNwRfc 调用SAP RFC。用VS2022的WINFORM应用程序&#xff0c;使用NuGet中的SapNwRfc类库&#xff0c;call SAP系统中的RFC&#xff0c;传入7个参数&#xff0c;得到RFC返回的2张表的数据。 一、VS2022中新建WINFORM…

Nodejs前端学习Day1_补档

我给day1搞没了&#xff0c;还是觉得该补一个&#xff0c;有用 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript代码可以在浏览器中运行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 补档 一、学习目标 二、学习目录 三、为什…

RustDesk私有化部署,自建远程桌面搭建教程

以linux操作系统为例&#xff1a; 解压安装 # 使用wget进行下载1.1.8-2版本&#xff08;最新版本可以看上述发布地址&#xff09; wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rust…

Hive3.1.3基础

参考B站尚硅谷 目录 什么是HiveHive架构原理 Hive安装Hive安装地址Hive安装部署安装Hive启动并使用Hive MySQL安装安装MySQL配置MySQL 配置Hive元数据存储到MySQL配置元数据到MySQL Hive服务部署hiveserver2服务metastore服务编写Hive服务启动脚本&#xff08;了解&#xff09…

EventSource 长链接执行

EventSource 说明文档MDN 其他参考文档 一、利用node启服务 import fs from fs import express from express const app express() // eventSource 仅支持 get 方法 // 服务器端发送的数据必须是纯文本格式&#xff0c;不能是二进制数据。 app.get(/api, (req, res) > …

table用position: sticky固定多层表头,滑动滚动条border边框透明解决方法

问题&#xff1a;我们发现&#xff0c;只要设置了border边框&#xff0c;这个位置滑动有内容经过就会出现如图的情况。 解决的方法&#xff1a;用outline&#xff08;轮廓&#xff09;替代border,以达到我们想要的样式。 table thead tr {border: none;outline-color: #fff;ou…

Redis(八)哨兵机制(sentinel)

文章目录 哨兵机制案例认识异常 哨兵运行流程及选举原理主观下线(Subjectively Down)ODown客观下线(Objectively Down)选举出领导者哨兵选出新master过程 哨兵使用建议 哨兵机制 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新…

excel 设置密码保户

目录 前言设置打开密码设置编辑密码 前言 保户自己的数据不被泄漏是时常有必要的&#xff0c;例如财务数据中最典型员工工资表&#xff0c;如果不设置密码后果可想而知&#xff0c;下面我们一起来设置excel查看密码和编辑密码。我用的是wps,其它版本类似&#xff0c;可自行查资…

已经安装了CUDA,但是cmd执行nvcc -V报错:nvcc不是内部或外部命令,也不是可运行的程序或批处理文件

请注意&#xff0c;查看版本的指令是nvcc --version或nvcc -V&#xff0c;注意区分大小写 如果还是不能输出版本信息&#xff0c;那这个原因可能是由于没有在系统环境变量里添加CUDA。 先来看看CUDA是否安装成功&#xff1a; 在CUDA的安装路径下找到bandwidthTest.exe 和 devi…

一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率二、使用步骤1、研究背景2、方法提出3、相关方法3.1、FSR网络结构3.2…

26.各品类中商品价格的中位数(ceil与floor函数)

题目&#xff1a; 题解&#xff1a; --这道题主要考察中位数的取法 SELECT category_id,cast(sum(price)/count(1) as DECIMAL(16,2)) medprice from( SELECTcategory_id,price,rn,max(rn)over(partition by category_id) max_rn from(SELECTcategory_id,price,row_number() …

Emergent Abilities of Large Language Models 机翻mark

摘要 证明通过扩大语言模型可以可靠地提高性能和样本效率在广泛的下游任务。相反&#xff0c;本文讨论了我们称之为大型语言模型的新兴能力的一种不可预测的现象。我们认为如果一个能力不存在于较小的模型中&#xff0c;但在较大的模型中存在&#xff0c;则该能力就是新兴的。…

开发微信小程序,将图片下载到相册的方法,saveImageToPhotosAlbum怎么用

在开发微信小程序的时候&#xff0c;经常能看到小程序里面有下载按钮&#xff0c;如何将小程序中的图片下载到手机相册中那&#xff0c;下面给大家说一下怎么做&#xff0c;代码如何去写。 一、到微信小程序后台开启“用户隐私保护指引” 1.进入小程序后台&#xff0c;侧拉拉到…

牛刀小试 - C++ 推箱子小游戏

参考文档 C笔记&#xff1a;推箱子小游戏 copy函数 memcpy()函数用法&#xff08;可复制数组&#xff09; 使用memcpy踩出来的坑&#xff0c;值得注意 完整代码 /********************************************************************* 程序名:推箱子小游戏 说明&#x…

前端怎么监听手机键盘是否弹起

摘要&#xff1a; 开发移动端中&#xff0c;经常会遇到一些交互需要通过判断手机键盘是否被唤起来做的&#xff0c;说到判断手机键盘弹起和收起&#xff0c;应该都知道&#xff0c;安卓和ios判断手机键盘是否弹起的写法是有所不同的&#xff0c;下面讨论总结一下两端的区别以及…