Python-Selenium Webdriver+google chrome浏览器爬取中国知网的文献概述

本文介绍如何使用Python的Selenium WebDriver和Chrome浏览器爬取中国知网的文献概述。通过匹配ChromeDriver和浏览器版本,自动化检索并批量获取文献URL,接着解析详情页面,抓取标题、摘要等信息,最终将数据保存到Excel。适用于专利检索,但需根据实际网页结构调整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python-Selenium Webdriver+google chrome浏览器爬取中国知网的文献概述


前言

小白的第一篇文章!最近假期写专利需要参考知网所有相关专利文献,一篇篇点进去看实在太慢了。。一气之下就写了个python脚本直接把摘要界面所有有用的信息全扒下来了hh,写个博客记录一下供以后参考

一、使用webdriver的注意事项

使用selenium webdriver + chrome浏览器时要注意chromedriver版本和浏览器版本的匹配性,下载链接附在这里了:
ChromeDriver与Chrome版本对应关系及下载链接

下载完成后把对应的ChromeDriver.exe文件放到python项目的对应目录下就行。
注意:有的软件管家会提示谷歌浏览器的更新,最好忽略更新,不然版本不匹配的话ChromeDriver会不支持(我就是很久不用webdriver给忘了,让qq管家更新了浏览器,导致程序没法运行,还得回网上找资源),而且,最新版本的浏览器似乎没有对应的ChromeDriver。

二、开始码代码

1.引入库&总体思路

引入库相关代码如下:

# -*- coding:utf-8 -*-
import requests
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import openpyxl

脚本的大致思路为:用webdriver扒下所有满足我要求文章的url,存进列表里,再逐个请求,用BeautifulSoup编译,爬取文章详情页面的标题、摘要、机构、作者等信息。
编译环境为pycharm,安装了python3.7和anaconda3,这些包在anaconda里面都有,要是只装了python的话可以在控制台里面pip install一下。

2.检索部分

话不多说先上代码:

# 前序搜索条件的录入使用webdriver
driver = webdriver.Chrome()
driver.get('https://kns.cnki.net/kns8/AdvSearch?dbcode=SCOD')  # 这个直接就是高级检索的网页
time.sleep(2)

# advanced_search = driver.find_element_by_class_name('btn-grade-search')
# advanced_search.click()  # 跳转进入高级检索,后期可维护
# time.sleep(1)

major_search = driver.find_element_by_name('majorSearch')
major_search.click()  # 跳转进入专业检索,后期可维护
time.sleep(1)

# 输入检索语句,后期可维护
input_key_words = driver.find_element_by_class_name('search-middle').find_element_by_tag_name('textarea')
key_words = input("输入检索语句:")
input_key_words.send_keys(key_words)

search_button = driver.find_element_by_class_name('search-buttons').find_element_by_tag_name('input')
search_button.click()
time.sleep(2)

首先指出一下,因为我用的是专利检索,所以直接进了知网的专利库,正常进首页就行。这段代码用的是专业检索,输入检索语句就能查看结果,如果是高级检索的话需要修改一下对应的element然后分别send_keys就行。webdriver的自动化操作结束后需要看一下搜索结果和需求结果的匹配性,这属于文献检索的范畴了,这里不多啰嗦,大概看一下第一页搜索结果都满意的话,就可以下手扒url了。

3.文献url批量爬取

先上代码:

# 现在开始抓取每篇文献的url
results = driver.find_element_by_class_name('pagerTitleCell').find_element_by_tag_name('em').text
num_results = int(results)
num_pages = int(num_results/20) + 1

url_list = []
# 以下为测试代码,抓取目标元素存入字符串变量
# file = driver.find_element_by_class_name('seq').find_element_by_tag_name('input')
# file_attr = file.get_attribute('value')
# print(file_attr)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值