Python爬虫采集下载中国知网《出版来源导航》PDF文档

这篇具有很好参考价值的文章主要介绍了Python爬虫采集下载中国知网《出版来源导航》PDF文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Python爬虫采集下载中国知网《出版来源导航》PDF文档,Python3 爬虫专栏,python,爬虫,python3,中国知网,知网,数据采集,毕业设计

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

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

Python爬虫采集下载中国知网《出版来源导航》PDF文档,Python3 爬虫专栏,python,爬虫,python3,中国知网,知网,数据采集,毕业设计

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

Python爬虫采集下载中国知网《出版来源导航》PDF文档,Python3 爬虫专栏,python,爬虫,python3,中国知网,知网,数据采集,毕业设计

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

Python爬虫采集下载中国知网《出版来源导航》PDF文档,Python3 爬虫专栏,python,爬虫,python3,中国知网,知网,数据采集,毕业设计

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

我使用的环境是:

Windows 11 64位教育版

Pycharm 2023.2.3版本

python 3.6.8 

# encoding:utf-8
import json
import random
import time

import 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').text
            except:
                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 += 1
            print(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).content
    with 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_encoded

if __name__ == '__main__':

    # 采集网址:https://navi.cnki.net/knavi/newspapers/search?uniplatform=NZKPT
    # 再网址搜索 相关报纸的关键词信息

    data = ['标题', '日期', '内容链接']
    pa = 0
    baseIds = 'NMRB' #
    create_directory(baseIds)
    saveCsv(baseIds, data)
    key_words = "新农人" # 关键词

    key_words = text_to_urlencode(key_words)

    get_index(pa,baseIds,key_words)

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

不懂得请留言。不一定及时回复,但肯定会回复。文章来源地址https://www.toymoban.com/news/detail-818738.html

到了这里,关于Python爬虫采集下载中国知网《出版来源导航》PDF文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个月学通Python(二十八):Python网络数据采集(爬虫)概述(爬虫)

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 爬虫(crawler)也经常被称为网络蜘蛛(spider),是按照一定的规则自

    2024年02月14日
    浏览(50)
  • Python爬虫源码,Behance 作品图片及内容 selenium 采集爬虫

    前面有分享过requests采集Behance 作品信息的爬虫,这篇带来另一个版本供参考,使用的是无头浏览器 selenium 采集,主要的不同方式是使用 selenium 驱动浏览器获取到页面源码,后面获取信息的话与前篇一致。 理论上,几乎所有的页面内容都可以采用无头浏览器来获取,不过考虑

    2024年02月08日
    浏览(99)
  • Python 爬虫 之 抖音视频采集

    嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip install requests 如何安装python第三方模块: win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车 在pycharm中点击

    2024年01月20日
    浏览(78)
  • 微信小程序,Python爬虫抓包采集实战,采集某成考题库小程序

    从本篇博客开始,我们会针对微信小程序编写一系列的爬虫,这些爬虫依旧通过案例进行串联,保证对大家的学习有所帮助。 正式开始前先准备工具,一个可以解析 https 协议请求的软件 fiddler ,电脑版微信。 由于在 2022 年 5 月份,微信调整了其小程序架构,所以在正式开始

    2024年02月09日
    浏览(44)
  • Python爬虫/SAP-SRM数据采集

    系统版本:SAP系统NetWeaver。SRM主要功能如下图,其中需求预测、采购执行监控、寄售库存监控是业务计划有关的数据,使用频率最高。 ​数据采集范围 ​SAP/SRM系统界面 对于使用SRM的供应商来说,他们频繁登录SRM系统多有不便,SRM数据无法与自己公司信息系统对接,导致业务

    2024年02月12日
    浏览(47)
  • Python爬虫实战:自动化数据采集与分析

    在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。 一、环境准备 首先,确保您已经

    2024年02月11日
    浏览(51)
  • Python爬虫:批量采集58同城数据,进行可视化分析!

    哈喽大家好,今天我们来获取一下某个生活平台网站数据,进行可视化分析。 采集58的数据可以使用Python的requests库和beautifulsoup库,数据可视化分析可以使用matplotlib库和seaborn库。下面是一个简单的例子: 1、首先导入需要使用的模块   2、设置请求头,模拟浏览器请求。  

    2024年02月06日
    浏览(47)
  • 自动切换HTTP爬虫ip助力Python数据采集

    在Python的爬虫世界里,你是否也被网站的IP封锁问题困扰过?别担心,我来教你一个终极方案,让你的爬虫自动切换爬虫ip,轻松应对各种封锁和限制!快来跟我学,让你的Python爬虫如虎添翼! 首先,让我们来了解一下自动切换爬虫ip的终极方案是什么? 自动切换爬虫ip方案:

    2024年02月13日
    浏览(54)
  • Python异步编程高并发执行爬虫采集,用回调函数解析响应

    异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用,经常面临对外发送网络请求,调用外部接口,或者不断更新数据库或文件等操作。 这这些操作,通常90%以上时间是在等待,如通过REST, gRPC向服务器发送请求,通常可能等待几十毫秒至几秒,甚至更长。如

    2024年02月08日
    浏览(51)
  • 基于Python的网络爬虫电商数据采集系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包