目的:爬取毕设所需的数据源,包括论文标题、论文作者以及作者的详细信息。
所需第三方库:

  • Requests库
  • Selenium库
  • BeautifulSoup库

先贴一个我爬取到的结果图:

下面进入正题。
首先,我们打开知网首页:https://www.cnki.net/

我们必须先输入关键词,再点击搜索按钮才能够得到我们想要的内容,在此我以知识图谱为例进行搜索。按下F12查看网页的源码:

如上图,我们可以看到输入框所对应的input元素,将鼠标移到input标签上点击右键,选择Copy -> Copy selector 就可以拿到改标签的选择器,如下图:

我们以同样的方式也可以拿到搜索按钮的选择器:

这样做的目的是为了使用selenium代替我们去自动输入关键字以及搜索。
这里写一个driver_open方法,接收一个参数代表要搜索的关键字,使用google的driver。(这个driver需要下载到本地)

from bs4 import BeautifulSoup
from selenium import webdriver
import time
import requests
import csv# 进入知网首页并搜索关键词
def driver_open(key_word):url = "https://www.cnki.net/"driver = webdriver.Chrome("D:/Software/chorme/chromedriver.exe")driver.get(url)        # 进入知网首页time.sleep(2)# 将关键词输入搜索框driver.find_element_by_css_selector('#txt_SearchText').send_keys(key_word)time.sleep(2)# 点击搜索按钮driver.find_element_by_css_selector('body > div.wrapper.section1 > div.searchmain > div > div.input-box > input.search-btn').click()time.sleep(5)driver.close()# 拿到返回结果content = driver.page_source.encode('utf-8')soup = BeautifulSoup(content, 'lxml')    # 解析返回结果return soup

至此,我们拿到了一个soup对象,这个soup对象就是输入关键字后搜索得出的网页。如搜索“知识图谱”得到的soup:

我们再对这个网页进行分析,我们需要的内容是论文标题、作者名以及作者的详细信息。同样的,我们按下F12查看网页的源代码,可以发现我们需要的主体信息全都在这个table的tbody中:

用代码获取到这个tbody,然后对其解析

tbody = soup.find_all('tbody')    # 获取tbody标签
tbody = BeautifulSoup(str(tbody[0]), 'lxml') # 解析

这里通过find_all拿到的结果是一个数组。
然后我们继续观察,可以发现每一篇论文对应了tbody下的一个tr,tr下的td中包含了论文标题和作者列表等:

以同样的方法,我们可以拿到tbody标签下的所有tr元素,以及tr元素下的所有td元素:

tr = tbody.find_all('tr') # 获取tr标签,返回一个数组# 对每一个tr标签进行处理for item in tr:tr_bf = BeautifulSoup(str(item), 'lxml')# 获取论文标题td_name = tr_bf.find_all('td', class_ = 'name') # 拿到tr下的tdtd_name_bf = BeautifulSoup(str(td_name[0]), 'lxml')a_name = td_name_bf.find_all('a')# get_text()是获取标签中的所有文本,包含其子标签中的文本title = a_name[0].get_text().strip()print("title : " + title)# 获取包含作者的那个tdtd_author = tr_bf.find_all('td', class_ = 'author')td_author_bf = BeautifulSoup(str(td_author), 'lxml')# 每个a标签中都包含了一个作者名a_author = td_author_bf.find_all('a')authors = []# 拿到每一个a标签里的作者名for author in a_author:name = author.get_text().strip()    # 获取学者的名字print('name : ' + name)authors.append(name)paper = Paper(title, authors)papers.append(paper)

至此,我们就拿到了论文标题和对应的作者列表
上述代码中的Paper是自定义的论文类,如下:

# 定义论文类
class Paper:def __init__(self, title, authors):self.title = titleself.authors = authors

至此,我们就拿到了包含论文标题和论文作者的papers对象数组。

下一篇:Python爬虫——爬取知网论文数据(二)
讲了如何爬取多页,以及如何爬取作者的详细信息。

Python爬虫——爬取知网论文数据(一)相关推荐

  1. python爬取知网论文信息

    用Python爬取指望关于某个主题的所有论文摘要等信息. 很幸运的找到了一个大佬的代码来自己改改改! 先放大佬代码连接 Git 接下来就是我自己嚯嚯嚯改的,很小白的了... 应该是很详细得了 为了看懂 ...

  2. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

  3. 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: 1 # -*- c ...

  4. python爬虫爬取知网

    python爬虫爬取知网 话不多说,直接上代码! import requests import re import time import xlrd from xlrd import open_wor ...

  5. Python爬虫-爬取知乎(小结)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:小小科 ( 想要学习Python?Python学习交流 ...

  6. python 爬虫爬取统计局北京统计数据

    python 爬虫爬取统计局统计数据 写在前面 主要因为朋友写论文,要爬取北京的经济数据.拜托我写一个爬虫爬取数据.爬取的都是公开的数据,代码仅供学习使用,切勿用作非法. http://tjj.bei ...

  7. Python爬虫爬取知乎用户信息+寻找潜在客户

    [Python应用]寻找社交网络中的目标用户 日后的更新:由于是很久以前的课程设计项目,完整的源码已经不见了,关键的网页数据获取和解析的部分代码我在文章中已经贴出来了,但写的也不够好,如果想参考爬取知 ...

  8. python爬虫爬取知乎图片,轻松解决头像荒

    前言 最近逛知乎,发现了一个问题.         回答下很多好看的头像,因此我动了一个心思,想要制作一个小网页,可以随机返回一款好看的情头.心思既起,当然要开始付诸行动.但是想要制作如此一个网页,后 ...

  9. python爬取知网论文关键词_Python爬虫根据关键词爬取知网论文摘要并保存到数据库中【入门必学】...

    搜索出来的结果和知网上的结果几乎一样,另外以后面试找Python工作,项目经验展示是核心,如果你缺项目练习,去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面很多新 ...

  10. Python爬虫——爬取知乎(实践)

    今天开始看另外一本网络爬虫的书.发现有好多内容重复了,所以跳着看了看.然后发现了一个书后的实战示例. 给书后一个评价:这什么玩意!最后还是用了我自己的方法来实现对于这个知乎直播部分的爬取. 今天顺着昨 ...

最新文章

  1. c语言:输入两个正整数m和n,求其最大公约数和最小公倍数
  2. MacBook各个快捷键符号
  3. Jquery getJSON方法分析(一)
  4. 如何将APACHE许可证应用于您的工作
  5. headroom.js插件使用方法
  6. [vue] SPA单页面的实现方式有哪些?
  7. linux usb学习笔记
  8. django-admin的源码流程
  9. Ubuntu16.04安装ros kinetic版本
  10. sublime3安装常用插件
  11. 联想服务器万全T260G3系统,联想万全T260G3服务器电子教室更易管理
  12. oracle 客户端 ora-12162,oracle 连接不上ORA-12162: TNS:net service name is incorrectly specified的另外一种可能原因...
  13. linux取证——基础取证命令集合
  14. 标题您的主机不满足在启用 Hyper-V 或 Device/Credential Guard 的情况下运行 VMware Workstation 的最低要求
  15. 计算机开机反复启动,电脑开机一直无限重启怎么解决
  16. 中国开发者将迎来黄金十年
  17. 【WebApp】离线webapp (iPad版本)开发手记
  18. 国际高性能计算和人工智能咨询委员会公布第五届亚太区 HPC-AI竞赛结果
  19. 想不想修真鸿蒙源液有什么用,想不想修真初代小世界怎么玩_想不想修真初代小世界玩法介绍_玩游戏网...
  20. 计算机卸载一个程序正确操作,电脑这两个操作要学会,两种卸载软件的方法,保证电脑系统稳定...

热门文章

  1. android 消息推送js,消息推送方式
  2. 微信小程序之轮播图(附带图片)
  3. CAD无吊顶画弱电点位图总结
  4. PAT简介和2019年秋季浙大PAT考试报名流程
  5. ios识别人脸自动拍照_iOS 相机流人脸识别(一)-人脸框检测(基于iOS原生)
  6. 论PRINCE2认证的优势是什么?
  7. 神经网络与深度学习pdf下载
  8. python结合mysql 购物管理系统
  9. catia逆向建模步骤_CATIA逆向教程- 逆向步骤
  10. 综治应急指挥中心建设方案