文章目录
前言
关于知网爬虫的文章,后台反响都很不错。虽然但是,还是忍不住想诉苦一下
有些小伙伴文章甚至代码看都没看完,就问我 ”为什么只能爬这么多条文献信息?“(看过代码的会发现我代码里面定义了 papers_need
变量来设置爬取篇数),”为什么爬其他文献不行?我想爬 XXX 文献“(因为代码里面写的是通过【知网高级搜索中的文献来源】来搜索文章),或者是有些小伙伴直接把代码报错贴给我,问我咋回事
我觉得在网上看到别人的代码,不要一昧地拿来主义,复制粘贴就行了,你要结合你自己的本地环境对代码做适当地修改。比如定位 Xpath 元素路径,不通电脑或者说不同浏览器同一元素的 Xpath 路径有可能不是一样的,这个路径在我本地运行没问题,到了你那里就报错
当看别人的代码时,最好先搞清楚:
- 别人是怎么想的
- 别人为什么要这么写
- 这么写的逻辑是什么?
以我这几篇知网爬虫文章举例:
- 为什么要用 selenium 来爬取?
- 如何分析网页?如何定位元素?(Xpath、CSS 选择器等等)
- 如何通过 selenium 来模拟人为操作浏览器(鼠标移动、点击、滑动窗口等等)
言归正传,昨天收到一位粉丝私信说能不能根据【关键词】来搜索文献
今天这篇文章着重讲如何分析网页结构然后使用 selenium 根据知网的关键词来搜索文献。至于对搜索到的文献的爬取,本文不过多介绍,因为以前的文章已经写过了
需求分析
我们先来看下如果要通过关键词搜索文献,该怎么操作?
首先我们登录网站,点击【高级搜索】(也可以直接点击搜索框中的【主题】下拉选择)
然后我们点击【主题】——>选择【关键词】
输入要搜索的关键词(例如:数字普惠金融)然后点击【检索】
网页分析&元素定位
结合前面的需求分析,我们就可以对网页进行分析并定位出对应的元素
首先是【高级搜索】,高级搜索有一个链接:高级检索-中国知网 (cnki.net),这样就能省掉一个步骤了
然后我们需要点击 【主题】,才会出现下拉框。在分析网页的时候我发现当出现下拉框时,标签 <div class="sort-list" style="display: none;">"
中的 style
属性由 "display: none;"
变成 "display: block;"
下拉框出现之后,我们需要定位到 【关键词】 这个标签
# 关键词 Xpath 路径或 CSS 选择器
//*[@id="gradetxt"]/dd[1]/div[2]/div[1]/div[2]/ul/li[3]
li[data-val="KY"]
接着找到【搜索框】的 Xpath 路径。这里是一个 input 元素,用于接收来自用户的数据
# 输入框
//*[@id="gradetxt"]/dd[1]/div[2]/input