用Python批量获取知网文献信息,轻松解放双手 !

一、前言

每当我们临近毕业要写论文的时候,就需要从知网查找大量的文献。但去知网一条一条进去看摘要又略显麻烦和浪费时间。于是,反手写一个爬虫,批量获取基本信息,那不是轻松许多?
在开始这个项目之前,我抱着不重复造轮子的心态,寻思着去Github先找找。结果发现基本上都是几年前的项目,现在早已不能使用。最后证实了,靠别人不如靠自己,撸起袖子就开干!

1. 爬虫基础

网络爬虫就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
目前爬虫主要分为以 requests 库为代表的模拟请求类爬虫和以 selenium 为代表的模拟浏览器用户行为的爬虫两类。:

  • Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。

  • Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。

中国知网作为国内最知名的文献数据库之一,有着复杂的反爬虫机制,包括:动态JS、iframe、验证码等等。直接模拟请求难度较大,且容易被封IP地址,所以本文主要介绍如何使用Selenium来爬取知网。

2. Selenium基本用法

  • 声明浏览器对象

Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,我们只要首先下载好相应浏览器的webdriver到python主目录中,或者加入环境变量即可。

不同浏览器的初始化:

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.Safari()
  • 访问页面

我们可以用get()方法来请求一个网页,传入参数链接URL

browser.get('https://www.bing.com')
  • 查找元素

find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()

在element变成elements就是找所有满足的条件,返回数组。
另外,我经常使用的查找元素方法为selenium中selenium.webdriver.common.byBy, 联合隐士等待EC
用法如下:

# 单个元素
WebDriverWait( driver, 10 ).until( EC.presence_of_element_located((By.XPATH ,"") ) )
# 多个元素
WebDriverWait( driver, 10 ).until( EC.presence_of_all_elements_located( (By.CLASS_NAME  ,"fz14") ) )

# 元素类型有:
CLASS_NAME = 'class name'
CSS_SELECTOR = 'css selector'
ID = 'id'
LINK_TEXT = 'link text'
NAME = 'name'
PARTIAL_LINK_TEXT = 'partial link text'
TAG_NAME = 'tag name'
XPATH = 'xpath'
  • 常用方法

在找到相应元素位置后,我们常用的交互动作包括:点击、输入、清楚、获取属性、获取文本

element = find_element_by_id(''id)

element.send_keys('Hello')  # 传入Hello
element.clear()  # 清除输入框
element.click()  # 点击元素
element.text  # 获取元素文本信息
element.get_attribute('href')  # 获取元素属性

还有大量的方法这里没有提及,不过有了以上基本知识,我们就可以开始项目了!

二、知网爬虫实战

1. 知网页面元素分析

知网首页中,我们仅需要先在输入框中键入主题词,然后点击搜索图标,即可跳转到结果页面。

img

我们通过浏览器的检查页面,得到输入框和搜索图标的XPATH分别为:

input_xpath = '/html[1]/body[1]/div[1]/div[2]/div[1]/div[1]/input[1]'
button_xpath =  '/html[1]/body[1]/div[1]/div[2]/div[1]/div[1]/input[2]'

我们只需要在输入框键入我们要搜索的主题,然后操作搜索按钮即可转到结果页。以搜索Python为例,结果页如下所示,共找到15,925条,300页。每页中包含20个条目,每个条目包含题目、作者、来源等信息。

img

  • 23
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用Python爬虫获取知网文献信息,可以使用以下方法: 方法一:使用网站自带的批量导出功能。有些大型文献网站提供了批量导出功能,可以将搜索结果或指定的文献批量导出为Excel或CSV格式的文件。你可以在网站上进行搜索,找到所需的文献,然后选择批量导出选项来获取文献信息。 方法二:使用XPath来定位并获取文献信息。XPath是一种用于确定XML文档中某部分位置的语言,可以用于在网页的HTML代码中定位需要的信息。你可以使用Python的XPath库来解析网页并提取所需的文献信息。首先,需要进行浏览器的初始化,可以使用Selenium库中的webdriver模块来实现。例如,可以选择Chrome、Firefox、Edge或Safari浏览器。然后,可以使用XPath语法在网页中定位需要的信息,并通过Python代码提取出来。 总结起来,你可以选择使用网站自带的批量导出功能或者使用XPath来定位并提取文献信息。具体选择哪种方法取决于你要爬取的网站和你的需求。希望这些方法可以帮助你获取知网文献信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python爬虫爬取文献数据](https://blog.csdn.net/m0_66526403/article/details/130864126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值