Java爬虫框架wemgic_Java爬虫框架-WebMagic挖坑补坑指南

article/2025/10/17 3:08:10

以前总是用的Python下的Scrapy和crawley和PHP的小众爬虫框架,最近突然想到了何不用下Java下的框架试试?

查了下Java下的爬虫框架自然也不在少数,Nutch,WebMagic,WebCollector,这三个绝对是够用了,爬一般的网站不在话下,至于遇到那些爬取频次限制,前端JS渲染(AngularJS),各种识别码之类的这都都是爬虫的老问题了,作为成熟的爬虫框架,解决办法应该也是不少的。我觉得现有的爬虫框架都已经很优秀了,本来框架的诞生就是为了解决我们遇到的复杂繁琐的问题,至于爬虫内部的实现还需看代码,认真学习,这些就很多了。

我用的是WebMagic,主要还是看重的如介绍中所说的简单灵活的Java爬虫框架,便于二次开发,提供简单灵活的API,是中国人开发的,文档很详细:http://webmagic.io/docs/zh/

1. Https下无法抓取只支持TLS1.2的站点

你可能会遇到javax.net.ssl.SSLException: Received fatal alert: protocol_version错误。

可以说的是JDK1.8默认使用TLSv1.2 ,JDK1.7默认使用TLSv1.1,WebMagic默认使用的是TLSv1.0。

具体的支持情况可以看oracle的博客:https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https

d01519c58911c6bf7f5c47861c2cd790.png

想要解决这个问题作者在GitHub上面已经说的很清楚了。Https下无法抓取只支持TLS1.2的站点 #701,作者说在0.7.4版本中会修复这个问题,但是至今都没见到新版本,既然作者已经给出了解决办法,那我们就自己动手就行了。

对于只支持的TLS1.2的站点,需要修改HttpClientGenerator中的buildSSLConnectionSocketFactory方法。return new SSLConnectionSocketFactory(createIgnoreVerifySSL(), new String[]{"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"},

null,

new DefaultHostnameVerifier())

我在文章的后面提供了已经修改好了的jar包,你可以替换掉你的,这个问题就能解决,不过我依旧推荐你重写一个Class,编译器会优先加载,buildSSLConnectionSocketFactory方法,这样方便进行调整。(导包的时候不要用oracle的包,用apache的包)

2. Https下无法抓取只支持TLS1.2的站点(同上面)

当你对代码进行了修改后,可能还是会有问题,会遇到SSLHandshakeException: Received fatal alert:handshake_failure

这个问题的出现主要是加密方式的问题。比如你要爬取的网站是RC4(SSL_RSA_WITH_RC4_128_SHA),RSA 2048(SHA256)( TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256)。

你可以通过MySSL查询到网站对于证书的支持情况。

7e73c316eaf1b8efa5eef3e9dc69d4fd.png

在下面能看到JDK的支持情况:

49755a05813b8ad1d54f1c211db14b57.png

但是如果你是RSA 2048(SHA256)等,你首先得看带爬取的网站是否支持,然后你把从MySSL中握手成功的方法加到SSLConnectionSocketFactory中。

e8f55b4770d3b4a428543b9b9cb1faac.png

38f62c8c66a7fd8107a0453be2c5f1db.png

如果上述操作还是不行,我推荐你打开-Djavax.net.debug=all ,抛出详细的调试信息。

这里感谢https://blog.csdn.net/u014644574/article/details/83381303,讲得很清楚。里面讲到了3种网上的解决方法,比如jce的安全机制,但是我替换了也无效。

3. Xsoup-XPath解析器

4. 传Cookie,请求头

在site对象后.addCookie和.addHeader,如果你是要添加Cookie,务必加上域名.setDomain,否则不会生效。

5. 剩下的就简单了

开始你自己的表演了,不知道为何WebMagic已经停更了很长一段时间了,很可惜。


http://chatgpt.dhexx.cn/article/VK6A5jG2.shtml

相关文章

java爬虫框架哪个好_Java爬虫(二)Java爬虫框架

关于本文: 之前写了个Java爬虫(一),拖更了很久,今天终于想着补上Java爬虫二了,今天就粗略水一期,给大家介绍一个比较完善的Java爬虫——WebMagic,而且它的文档写的也很详细,上手非常容易。 ——野狗菌【希望…

java爬虫框架—WebMagic

什么是网络爬虫 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统…

java爬虫框架哪个好_java爬虫框架的使用

原标题:java爬虫框架的使用 随着互联网的发展,编程程序语言也开始被越来越多的人所掌握,但是自始至终,java语言一直是被使用范围最广的编程语言。今天,武汉中软国际主要给大家讲解的是java语言中的爬虫java框架结构是怎…

Java爬虫框架WebMagic

WebMagic的架构设计参照了Scrapy,而实现则应用了HttpClient、Jsoup等Java成熟的工具。 WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成: Downloader : 下载器PageProcessor: 页面解析器Scheduler: 任务分配、url去重Pipelin…

Java爬虫框架之WebMagic的学习总结

Java爬虫框架之WebMagic WebMagic概述特性架构四大组件数据流转对象控制爬虫运转的引擎Spider WebMagic的基本使用添加WebMagic的核心与扩展依赖爬虫实现 爬虫的编写过程实现PageProcessor爬虫配置抽取页面元素链接的发现 Selectable抽取元素抽取部分API获取结果的API 使用Pipe…

Java爬虫(三)-- 爬虫框架WebMagic的使用(以csdn页面为例)

一、WebMagic介绍 WebMagic是当前比较主流的一款Java爬虫框架。WebMagic项目代码分为核心和扩展两部分。核心部分(webmagic-core)是一个精简的、模块化的爬虫实现(这部分提供非常简单、灵活的API,在基本不改变开发模式的情况下,编写一个爬虫…

JAVA爬虫框架

WebMagic框架 webmagic结构分为Downloader,pageProcessor,Scheduler,pipeline四大组件 并由splider将他们组织起来 这四大组件对应着爬虫生命周期中的下载 处理 管理 和持久化等功能,依赖 <dependency><groupId>org.springframework.boot</groupId>&l…

一款非常牛逼的Java爬虫框架(高度灵活可配置)

点击关注公众号&#xff0c;利用碎片时间学习 介绍 平台以流程图的方式定义爬虫,是一个高度灵活可配置的爬虫平台 特性 支持Xpath/JsonPath/css选择器/正则提取/混搭提取支持JSON/XML/二进制格式支持多数据源、SQL select/selectInt/selectOne/insert/update/delete支持爬取JS动…

svn 图标不显示 window10

今天打开电脑&#xff0c;同步代码的时候&#xff0c;发现&#xff0c;所有的目录svn的图标都不显示了。 早在几年前遇到过一次&#xff0c;通过clear可以恢复&#xff0c;可是这次几次clear也不管用。 然后&#xff0c;果断打开svn的设置。找到图标的设定。 设定如下&#…

win10 SVN图标不显示 已解决

原因&#xff1a; SVN的图标的排位顺序排在下面去了&#xff0c;导致其它图标占用了它的位置&#xff0c;也就是需要把Tortoise的位置提到上面来 解决办法&#xff1a; winR&#xff0c;输入regedit进入注册表 ctrlf搜索ShellIconOverlayIdentifiers&#xff08;这里需要一会…

SVN文件夹不显示图标解决方法

从svn服务器上将文件夹导出到本地文件之后&#xff0c;svn相关文件夹没有显示相应的图标&#xff0c;解决方法如下。对于SVN来说&#xff0c;因为每个图标都代表着不同的含义&#xff0c;预示着不同的状态&#xff0c;是指示灯的作用&#xff0c;如果没有正确的图标很可能造成数…

win10 SVN 图标不显示的解决办法

win10 SVN 图标不显示的解决办法 前言一、进入注册表二、设置文件名三、重启四、检查五、原理 前言 项目关联到 SVN 之后&#xff0c;一般情况下会有各种各样的状态图标。用来标注本地与 SVN 版本异同情况。但是有时候看不到示意图标&#xff0c;今天记录一下解决办法。 一、…

svn图标没有显示的解决办法

解决办法&#xff1a; 1.打开注册表 键盘输入winr 运行&#xff0c;打开 regedit 2.修改注册表 打开注册表的如下路径&#xff0c;将前几个名字重命名&#xff0c;把名字前面的空格去掉&#xff0c;修改完成后&#xff0c;重启电脑即可。 \HKEY_LOCAL_MACHINE\SOFTWARE\Micr…

SVN、GIT图标不显示解决方案

1、WIN R打开 “运行”&#xff0c;输入"regedit"&#xff0c;打开注册表&#xff0c;然后复制下面的地址到地址栏&#xff0c;如下&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers如上图…

svn的图标突然不显示了

摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 作者&#xff1a;易冷zzz 链接&#xff1a;https://www.jianshu.com/p/92e8e1f345c0 来源&#xff1a;简书 著作权归作者所有。商业转…

解决 win11 git svn 图标问题

不要怀疑&#xff0c;我尝试过网上各种修复方式&#xff0c;也下载过各种修复工具&#xff0c;然都失败了。 别迟疑&#xff0c;以下是最有效的方法&#xff1a; 1、winr&#xff0c;输入 regedit 打开注册表&#xff1b; 2、找到路径【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\M…

Mac SnailSVN不显示状态图标

snailsvn 官网 依次打开 系统设置 -> 扩展 -> 查找程序调整优先级(优先级按降序排序)在我的扩展中没有找到排序功能, 就暂时禁用掉了 有关文件夹操作的拓展. (作者的描述: 如果有多个 Finder 扩展同时监视同一文件夹, 会有优先级问题, 只有最先出现的扩展才能添加图标…

SVN图标消失解决方案

1、首先打开注册表 WINR组合键打开运行窗口&#xff0c;输入regedit命令并回车 2、打开注册表窗口后然后找到以下目录&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 3、将我们需要的文件前面加上空…

解决svn文件图标不显示

1.首先检查svn设置中是否设置图标显示 2.winR&#xff0c;输入regedit&#xff0c;调出注册表信息&#xff0c;按下CtrlF,在注册表里搜索“ShellIconOverlayIdentifiers”查看是否存在Tortoise文件&#xff0c;存在直接跳到第四步&#xff0c;不存在&#xff0c;进行第三步 3. …

【SVN】win10下SVN图标不显示

目录 一、现象 二、打开注册表 三、找到SVN路径 四、重启电脑 一、现象 windows10绿色ICON不显示 二、打开注册表 winR 打开运行&#xff0c;输入regedit 三、找到SVN路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdent…