爬虫java版解决方案(转载)

比特踏月使
• 阅读 146

背景
​ 最近弄个数据获取的小功能,对于如何从网页来获取数据也算是有了一个初步的了解,一路也是跌跌撞撞,看过的几个方案做个小总结吧

​ 我们浏览网页的本质其实都是获取别人的后台数据展示,当我们需要大量的数据的时候,总不能去一个个点击页面抄数据下来 吧,那么我们就可以通过代码来实现,对于绝大部分网页,页面的结构都是具有规律性的,比如淘宝网上的商品详情页这种,肯定不可能一个商品一个界面是吧,任何涉及到详情页的界面肯定都是有规律的,那么我们就可以使用代码来解析页面获取数据. (搜索引擎的爬虫就不知道了哈)

​ 综上,按照个人理解,爬虫就是个可以替换人浏览页面,获取数据的工具,所以理论上你任何网页上你看到的感兴趣的数据都可以通过爬虫来帮你获取,类似于知乎上 “**是一种什么样的体验” 啥啥的回复,是不是分分钟一键获取,咳咳…

由于不是专业爬虫,仅仅了解了几种:

一、webmagic
​ webmagic采用的是完全模块化的设计, 标准OOP思想的设计方案,比较容易上手

官网文档地址:
文档讲的很详细,可以很容易就实现基础的页面爬取
​ 优点: 文档详细,按照文档实现各个模块就可以完成一个简单版的爬虫,功能还是很强大的(支持多线程,分布式)

​ 缺点: 不能支持对动态数据的获取

二、 selenium
​ 实现是基于模拟浏览器的操作来实现数据获取,可以通过代码驱动浏览器的各个操作

优点: 可以动态的获取数据,你的任何操作都可以使用代码来进行模拟
缺点: 获取数据还会有个浏览器跑着是不是太浪费了,毕竟内存资源很宝贵的;没有完整的技术方案支持,去重还有一些东西是需要自己去实现的
​ 基于相应优缺点: 感觉这个实现爬虫并不是太好,自己去实现一些模块还是多半不如使用别的开源方案的,当然这个优点就有点意思了,网页的自动化测试好像就是这个玩意儿了

​ ps: 可以根据配置的浏览器驱动来控制浏览器,最好玩的就是代码能够自动生成,浏览器装上插件之后可以录制自己的每一步操作,然后选择导出对应的语言代码

​ 再补充一个: jar版本的兼容有问题, 用最新版的吧

三、 phantomjs
​ PhantomJS是一个基于webkit的JavaScript API。支持Dom操作、css选择器、截屏等,无界面的浏览器操作,节省内存,另外支持js脚本,功能强大。

​ 本质上是一个无界面的浏览器,和selenium算是一个互补吧,内存换可视化,按需使用就好;

​ 总结: 上面的各个其实都有局限性,如果结合一下应该是可以实现绝大部分的数据爬取功能,以上内容只是初步入门和几种解决方案,代码就不配了(需要的话去搜关键词)

————————————————
版权声明:本文为CSDN博主「ray小菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_...

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java爬虫
想找一些图片做桌面背景,但是又不想一张张去下载,后来就想到了爬虫。。。对于爬虫我也没具体用过,在网上一顿搜索后写了个小demo。爬虫的具体思路就是:1.调用url爬取网页信息2.解析网页信息3.保存数据刚开始还用正则去匹配,获取img标签中的src地址,但是发现有很多不便(主要我正则不太会),后来发现了jsoup这个神器。jsoup
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
CuterCorley CuterCorley
4年前
商业数据分析从入门到入职(9)Python网络数据获取
@toc前言本文主要讲Python最常见的应用之一——网络数据获取,即爬虫:先介绍了网页和网络的基础知识,为从网页中获取数据打好基础;接下来以两个案例介绍从网络中获取数据和处理数据的不同方式,以进一步认识Python爬虫和数据处理。一、网络和网页基础知识1.数据来源数据源有很多,可以从数据库中获取,可以从文件中获取,也可以从
浩浩 浩浩
4年前
【Flutter实战】图片和Icon
3.5图片及ICON3.5.1图片Flutter中,我们可以通过Image组件来加载并显示图片,Image的数据源可以是asset、文件、内存以及网络。ImageProviderImageProvider是一个抽象类,主要定义了图片数据获取的接口load(),从不同的数据源获取图片需要实现不同的ImageProvi
Python进阶者 Python进阶者
3年前
HTML页面基本结构和加载过程
大家好,我是皮皮。前言对于前端来说,HTML都是最基础的内容。今天,我们来了解一下HTML和网页有什么关系,以及与DOM有什么不同。通过本讲内容,你将掌握浏览器是怎么处理HTML内容的,以及在这个过程中我们可以进行怎样的处理来提升网页的性能,从而提升用户的体验。一、浏览器页面加载过程不知你是否有过这样的体验:当打开某个浏览器的时候,发现一直
Stella981 Stella981
3年前
Django的ListView超详细用法(含分页paginate功能)
开发环境:python3.6django1.11场景一经常有从数据库中获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示。解决方案常规写法是,我们通过Django的ORM查询到所有的数据,然后展示出来,代码如下:defuser_list(request
Stella981 Stella981
3年前
Javascript基础知识学习(三)
前言:javascript是一种轻量的、动态的脚本语言,我们为什么要使用javascript?对于一个网页的设计,.html用来放置网页的内容,.css则用来设计网页的样式和布局,那么.js它主要是使网页能够产生交互,意思就是能够通过代码动态的修改HTML、操作CSS、响应事件、获取用户计算机的相关信息等。javascript不是所有的浏览器
Python进阶者 Python进阶者
3年前
数据提取之JSON与JsonPATH
大家好,我是Python进阶者。背景介绍我们知道再爬虫的过程中我们对于爬取到的网页数据需要进行解析,因为大多数数据是不需要的,所以我们需要进行数据解析,常用的数据解析方式有正则表达式,xpath,bs4,这次我们来介绍一下另一个数据解析库jsonpath,在此之前我们需要先了解一下什么是json。一、初识JsonJSON(JavaScriptObjec
安居客房源信息获取
最近身边有几个做房产销售的朋友经常在诉苦,找不到客户,没有业绩,所以就比较好奇他们现在的行情,所以今天我们就使用python获取下安居客的一些房源数据。之前分享过很多关于爬虫的实践示例,今天这个也算是实践内容。我们就以户型结构、装修情况、水肥情况进行房源数据获取。爬取数据的通用流程:1、根据url请求页面,获取页面响应对象2、将页面响应对象转化为对象3、定
如何应对亚马逊反爬机制
大家都知道亚马逊是全球最大的购物平台很多商品信息、用户评价等等都是最丰富的。但是对于爬虫来说,亚马逊的反爬机制应该也是数一数二的,想要获取亚马逊数据的人很多,但是真的能成功的确是少数,所以今天小编就手把手带大家,越过亚马逊的各种反爬机制爬取你想要的商品、评论等等有用信息。这里我们可以通过以下一些步骤去实现亚马逊数据的获取。一、使用requests的get请求
Python进阶者 Python进阶者
1年前
想获取JS加载网页的源网页的源码,不想获取JS加载后的数据
大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【梦】问了一个Python网络爬虫的问题,这个网站不知道使用了什么反爬手段,都获取不到页面数据。原来的那篇文章竟然爆文了,突破了1.5w的阅读量,欢迎大家围观。不过这里粉丝的需求有点奇怪
比特踏月使
比特踏月使
Lv1
给不了彼此幸福的人是终身都不必再见的人.
文章
4
粉丝
0
获赞
0