继昨天使用Selenium+ChromeDriver爬取中国知网页面后,今天又想到了一些别的方法,就是HtmlUnit,作为一名萌新程序员,多写写总是好的,操蛋的是,还没想出好的爬取方法。

奉上jar包

          <!-- https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit --><dependency><groupId>net.sourceforge.htmlunit</groupId><artifactId>htmlunit</artifactId><version>2.29</version></dependency><!-- https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit-core-js --><dependency><groupId>net.sourceforge.htmlunit</groupId><artifactId>htmlunit-core-js</artifactId><version>2.28</version></dependency>

HtmlUnit就是无GUI的浏览器操作页面,本质上还是一个浏览器,所以在本质上和Selenium差别不大吧,稳定性可能存在差异。

说一下我的思路把找到特定大学的网址,检索出论文数量,和页面数量,抓取每个论文连接特有的filename,然后点击下一页,以福建农林大学为例,总共100355篇论文,我最多的时候抓取到了10339条记录,还是不完善。

下面就是代码了:

package com.qdcz.plugins;import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import org.apache.commons.lang3.StringUtils;import java.io.IOException;
import java.util.List;public class CnkiPost {/** 获取动态url* throws IOException* InterruptedException* */public static void main(String args[]) throws IOException, InterruptedException {HtmlPage page=null;WebClient webClient=new WebClient();// 禁止JS//webClient.getOptions().setJavaScriptEnabled(false); 暂不需要下一页需要js渲染点击// 禁止CSSwebClient.getOptions().setCssEnabled(false);// 将返回错误状态码错误设置为falsewebClient.getOptions().setThrowExceptionOnFailingStatusCode(false);// 启动客户端重定向webClient.getOptions().setRedirectEnabled(true);page=webClient.getPage("http://navi.cnki.net/knavi/PPaperDetail?pcode=CDMD&logo=GFJNU");//休息等待数据缓冲Thread.sleep(2000);//获取总页数List<HtmlSpan> span=page.getByXPath("//*[@id=\"partiallistcount2\"]");String nums=span.get(0).asText();int num=Integer.parseInt(nums);System.out.println(num);int y=0;for(int j=0;j<num;j++){List<HtmlAnchor> l=page.getByXPath("//*[@id=\"rightCatalog\"]/div[2]/div[2]/table/tbody/tr/td/a");//获取论文的独有的filenamefor(int i=0;i<l.size();i++){String links=StringUtils.substringAfter(l.get(i).toString(),"FD&amp;");String linkss=StringUtils.substringBefore(links,"&amp;tab");System.out.println("--"+ i+"--"+linkss);y++;}System.out.println("现在爬取到"+ (j+1)+"页");//点击下一页HtmlAnchor next=(HtmlAnchor) page.getByXPath("//*[@id=\"rightCatalog\"]/div[1]/div[2]/a[2]").get(0);next.click();Thread.sleep(3500);}System.out.println(y);}}

老大布置的活过了几天了,还是原地踏步,心塞,头疼。
诸位有什么好的想法,可以告知一下在下,不胜感激。

HttpUnit爬取中国知网特定大学网页相关推荐

  1. Java使用Selenium+ChromeDriver 爬取中国知网

    Java使用Selenium 爬取中国知网 所需Jar包 中国知网的网页结构,我就不在这里赘述了,自己去看,这里我操作的是爬取博硕论文,只抓取前十页 当Selenium无法调取ChromeDriver ...

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

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

  3. Python爬取中国知网文献、参考文献、引证文献

    转载自博客园文章作为学习资料,代码及相关介绍非常详细.原文链接见Python爬取 中国知网文献.参考文献.引证文献

  4. python爬取中国知网(中国优秀硕士学位论文数据库)

    笔者这几天受团队任务安排,需要写一份儿关于知网(中国优秀硕士学位论文数据库   入口:http://gb.oversea.cnki.net/kns55/brief/result.aspx?dbPref ...

  5. 爬取中国知网搜索cnki.net

    爬取cnki.net知网搜索页 import requests from lxml.html import etree url = 'https://kns.cnki.net/KNS8/Brief/G ...

  6. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫

    导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...

  7. python爬取中国天气网中国全部城市的天气链接

    近期自己尝试用python写一个qqbot实现天气查询功能,现已基本实现 已经基本完成爬取中国天气网的所有城市的天气情况链接 下附中国天气网所有城市的名称及对应链接 {'朝阳': 'http://ww ...

  8. R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据

    接上一篇用R语言爬取中国天气网单个城市的7天实时天气预报数据,这篇文章综合一下,使用R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据,这里的步数跨度可能有点长,但思路确实是3 ...

  9. python爬取中国天气网中城市及其对应编号

    文章目录 一.前言 二.思路 三.程序 四.注意事项 一.前言 为了实现爬取各地城市天气预报及其可视化的需要,爬取中国天气网中城市及其对应编号 . 天气预报可视化文章如下: <python爬虫, ...

最新文章

  1. 每天一道LeetCode-----化简路径
  2. 2017一季度JAVA面试题锦集
  3. centos5.9 mysql_CentOS 5.9系统服务器使用yum安装Apache+PHP+MySQL环境
  4. axis=0 与axis=1 的区分
  5. phpcms v9 sql数据{$r[content]},前端如何换行显示?
  6. javascript实现的一个信息提示的小功能/
  7. 95-140-108-源码-transform-算子process
  8. win10配置清华源——快速安装anaconda、TensorFlow和pytorch
  9. spring mvc-基础-简单程序
  10. uboot移植——启动第一阶段
  11. DoNet6新特性 PriorityQueue 优先队列终于来啦~
  12. css 改变图片的背景色,css3实现背景图片颜色修改的多种方式
  13. BCB 第三方组件/控件 ZZ
  14. 结对开发石家庄地铁线路
  15. Linux---带你区分根目录 和 家目录
  16. html百度换皮肤,windows7系统下怎么给百度网页更换皮肤
  17. Qua Vadis Eclipse? 第一部分
  18. 数据分析三剑客之特征值提取(七)
  19. xampp软件安装流程
  20. 云服务 saas_SaaS和云服务策划

热门文章

  1. Python面试基础篇 - 50道经典面试题(附答案及多种解答)
  2. 小视频APP源码开发者对小视频平台的三个忠告
  3. electron 项目 第一篇 vite +vue3 搭建electron项目
  4. NOIP2018提高组省一冲奖班模测训练3 T2 XYG的蛋糕
  5. 行高和高度的三两事:行高 > 高度 文字靠下;行高 < 高度 文字靠上
  6. 小白学习微信小程序指南
  7. iOS中怎么存储照片到自定义相册 转载备份
  8. AS的APP接收HC-06蓝牙模块数据
  9. iOS开发-智能嘘嘘扣项目总结(智能硬件开发)
  10. Python 年月日、儒略日、年纪日互转函数