基于Java的网络爬虫原理与技术实战
网络爬虫相关原理,流程,以及对应的相关java基础知识(如集合操作、文本操作、数据库操作、日志使用、maven开发、网络抓包等),java进阶知识(如多线程网络爬虫、模拟登陆策略、基于图像识别的模拟登陆策略、防封策略、定期更新策略等)。再介绍理论的同时,进行实战开发。
HFUT_qianyang
刘老师指示:学如逆水行舟,不进则退;心似平原跑马,易放难收。不能放松,继续!
展开
-
带你入门Java网络爬虫
爬虫初始记得,在本科时,因为毕业论文需要不少网络上的用户的问答数据。最开始,我并没有搞过网络爬虫,只能利用关键词搜索的方式,找到相关的数据,然后一条一条复制。你可能觉得这样很傻,但不得不承认这确实我最初的操作方式,很艰难,累的手疼。后来需要做网站系统,系统使用的是成熟的轻量级网站框架Spring MVC,当时需要将网络爬虫集成进来。Java开发的系统不太好集成Python的网络爬虫。不得已,学...原创 2019-12-06 07:15:28 · 2981 阅读 · 3 评论 -
Java网络爬虫该如何学习
引言互联网以及移动技术的飞速发展,使得全球数据量呈现前所未有的爆炸式增长态势。例如,用户在互联网上的搜索数据、交易数据、评论数据、社交数据等。这些网络大数据蕴含着丰富的可挖掘知识,是一种极具竞争力的人造资源。在此背景下,如何快速有效地提取并利用这些信息成为一个巨大的挑战。 搜索引擎(如Google、百度等)的出现,使得人们能够很快的检索自己想要的信息,基本的搜索引擎包括采集数据的...原创 2018-07-22 19:09:45 · 7204 阅读 · 1 评论 -
网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
以下内容,都是本人近一年写过的东西,也算花了不少时间。所以,源码并不是免费的,但很便宜。有需要的请邮箱联系:1563178220@qq.com。另外,可以辅助编写其他网络爬虫工程。网络爬虫基础学习包含:(1)java基础方面: java集合的操作;文本数据的读与写;日志的使用;(2)java操作mysql数据库方面:基本写法;快速操作写法(QueryRunner);(3)java网络爬虫方面:Ht原创 2017-07-11 19:44:55 · 6935 阅读 · 4 评论 -
网络爬虫原理
目录1网络爬虫原理2写网络爬虫的原因3网络爬虫的流程 4网络抓包 5HTTP状态码说明6Java网络爬虫需要的基础知识1、网络爬虫原理网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。网络爬虫的爬行策略分为深度优先和广度优先。如下图是深度优先的一种遍历方式是A到B到D 到E 到C原创 2016-08-13 19:20:18 · 31787 阅读 · 15 评论 -
网络爬虫之java基础(Ⅰ)
目录1Java中maven的使用 2log4jlog4j的介绍log4j提供的几种方法使用步骤 3输入流与输出流数据的读写程序以及map的使用 这张图为我给自己研究所人讲网络爬虫的一个流程,本人也将按照这个流程来讲网络爬虫,如果你的基础较好,可以直接跳过相关流程。1、Java中maven的使用使用maven能很轻松的从网络中下载所需的插件 及依赖(下载程序所依赖的JAR包),存储原创 2016-08-13 20:22:51 · 8231 阅读 · 3 评论 -
网络爬虫之Java基础篇(Ⅱ)
目录1集合操作集合创建集合数据的添加集合的遍历1、集合操作集合创建Set集合不可以放重复数据,List可以,Map主要存放的是键值对,其中key(主键)不可以重复。 List<T> list = new ArrayList<T>(); Set<T> set = new HashSet<T>(); Map<S,T> map = new HashMap<S,T原创 2016-08-13 20:44:41 · 5014 阅读 · 2 评论 -
网络爬虫之java基础篇QueryRunner(Ⅲ)
目录1Java操作数据库java操作数据库第一种方法java操作数据库的QueryRunner方法1、Java操作数据库如何将爬虫爬取的数据存储下来也是我们关注的问题之前,常用的存储方式有.txt,mysql,hbase等。前面已经介绍了Java输入流输出流操作文本的方式,现在主要介绍几种Java操作mysql的方式。java操作数据库第一种方法这种方法,是操作数据库的最简单,也是最原始的方法。原创 2016-08-13 21:29:06 · 7225 阅读 · 1 评论 -
网络爬虫中Jsoup请求url
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。下面是我写的一个案例欢迎大家参考:import java.io.IOException;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;impo原创 2017-02-11 09:45:49 · 5804 阅读 · 1 评论 -
简单的网络爬虫实现(Jsoup使用)
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。下面是我写的一个案例欢迎大家参考:package crawlerTest;import java.io.IOException;import org.jsoup.Jsoup;import org.jsoup原创 2016-08-13 22:06:46 · 4680 阅读 · 4 评论 -
网络爬虫之httpclient的使用
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 如下面程序,为我写的一个简单的httpclient的测试程序:package crawlerTest;import java.io.IOException;import org.apache.原创 2016-08-13 21:41:12 · 8598 阅读 · 11 评论 -
HttpClient4.5使用RequestConfig配置连接信息
RequestConfig类在构建网络爬虫时,经常需要配置很多信息,例如RequestTimeout(连接池获取到连接的超时时间)、ConnectTimeout(建立连接的超时)、SocketTimeout(获取数据的超时时间)、代理、是否允许重定向等信息。在HttpClient,实现这些配置需要使用到RequestConfig类的一个内部类Builder。如下为Builder的源码: ...原创 2018-10-25 08:37:42 · 28418 阅读 · 5 评论 -
网络爬虫中URLConnection的使用[以科学网为例]
目录爬取内容分析URLConnection的使用运行结果展示爬取内容分析本文以科学网为例讲解URLConnection的使用。如下图所示,为我们要爬取的第一个页面。即第一层。 下图为我们要爬取的第二个页面,也是我们真正想要爬取的页面。即用户id及用户名。即第二层。 在爬取第二层的入口地址时,我们发现第一层获取的url中含有中文字符,所以要对其进行转码,获取可供请求的url。 下面提供本人自原创 2017-02-11 10:08:26 · 3641 阅读 · 0 评论 -
Java操作数据库详解
目录JDBC简介JDBC的使用数据库连接方式案例程序Statement和PreparedStatement的区别JDBC简介JDBC(Java Data Base Connectivity)即java数据库连接,是Java核心类库的一部分,提供了操作多种关系数据库提供统一访问,是一种用于执行SQL语句的Java API。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员原创 2016-09-29 10:21:27 · 5475 阅读 · 1 评论 -
Jsoup解析html某片段的问题
案例问题分析解决办法案例在使用jsoup解析html中的某部分片段时,有时候会遇到解析不出字段。下面以案例进行讲解。<tr> <td class='center'> <font class='blue'> 北京 </font> </td> <td> 36175 </td> <td>原创 2016-12-10 10:38:32 · 4388 阅读 · 4 评论 -
基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
目录网络爬虫框架网络爬虫的逻辑顺序网络爬虫实例教学modelmainutilparsedb再看main方法爬虫效果展示网络爬虫框架写网络爬虫,一个要有一个逻辑顺序。本文主要讲解我自己经常使用的一个顺序,并且本人经常使用这个框架来写一些简单的爬虫,复杂的爬虫,也是在这个基础上添加其他程序。 首先,我的工程都是使用maven建的,不会使用maven的,请看之前写的网络爬虫基础。使用S原创 2016-08-14 11:40:08 · 77253 阅读 · 84 评论 -
网络爬虫中的模拟登陆获取数据(实例教学1)
目录模拟登陆的原因如何模拟登陆实战demo模拟登陆的原因很多网站,我们是无法直接获得服务器返回的数据,需要输入用户名及密码才能看到数据。如我们登陆人人网时,网站网址http://www.renren.com/。如图所示,看到的是一个登陆的界面,必须输入用户名及密码才能看到返回的数据。 登陆后,看到的数据,便可以通过爬虫将网站的html,或者json数据抓下来,解析。 如何模拟登陆模拟登陆之前原创 2016-08-19 11:33:54 · 34317 阅读 · 44 评论 -
java网络爬虫模拟登录案例教学2
模拟登录的网站我们需要登录的网站为:autonews,模拟登陆的地址为: https://home.autonews.com/clickshare/cspLogin.do 网络抓包分析在请求表单中,输入用户名及密码。 可以看到,我们要向后台提交的数据有哪些。 CSParamsToPassNames:CSParamsToPassNames user...原创 2018-05-16 11:34:06 · 1291 阅读 · 0 评论 -
网络爬虫抓包使用及通过表单请求
近期,有人将本人博客,复制下来,直接上传到百度文库等平台。 本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接) 如需源码程序,请联系我。有些网站抓包请求时,发现数据的真实地址,但在使用httpclient请求该真实地址时,却发现数据为空。该怎么办呢?以下以该网站为例进行讲解。网站地址为:https://las.cnas.org原创 2017-08-08 11:37:08 · 5660 阅读 · 0 评论 -
网络爬虫中Json数据的解析[以时光网为例]
目录json数据爬虫中Json数据的解析分析要爬数据建立Modelmain方法json在线测试网站两种解析方式程序运行结果json数据JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些原创 2016-08-21 23:49:51 · 17308 阅读 · 6 评论 -
Java多线程网络爬虫(时光网为例)
目录多线程简介多线程网络爬虫分析要爬的数据网络抓包爬虫框架modelMtimeThread主方法MtimeParse解析数据数据库操作多线程简介Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 本原创 2016-09-24 10:22:46 · 15931 阅读 · 14 评论 -
多线程新浪新闻搜索网络爬虫-基于关键字
本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接) 源码获取请联系:1563178220@qq.com简介互联网有海量的新闻,如何基于关键字检索相关新闻,并将新闻内容存储到数据库呢,以新浪新闻为例,如下图所示,输入关键字爬取历史新闻,可以看到历史新闻的数量有很多,因此采用单线程的方式,无法满足需求,可采用多线程的方式采集数据。程序原创 2017-11-20 22:06:13 · 6392 阅读 · 0 评论 -
网络爬虫中的Unicode码解决[实例]
unicode码爬虫中的Unicode转中文输出结果unicode码在我写爬虫的过程中,经常遇到一些网站的中文是经过Unicode转码的。在对网页进行解析时,需要将其进行转码,转为中文字符。例如,\u5317\u4eac\u767e\u5ea6\u7f51\u8baf\u79d1\u6280\u6709\u9650\u516c\u53f8对应的中文是北京百度网讯科技有限公司爬虫中的Unicode原创 2016-12-09 21:43:50 · 3770 阅读 · 0 评论 -
Java多层翻页网络爬虫实战(以搜房网为例)
目录分析所要爬取的数据爬虫框架modelmainutilparsedb数据库操作爬虫如何实现翻页地址拼接网络爬虫如何解决主键重复问题本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。分析所要爬取的数据在爬虫之前需要分析自己需要爬的数据。本文爬取的是所有http://esf.hf.fang.com/链接对应的房源的id,title,url。如下图所示:这原创 2016-10-24 16:00:32 · 14783 阅读 · 11 评论 -
豆瓣网络爬虫-java网络爬虫[验证码模拟登陆]详细介绍
目录抓包介绍解决验证码的思路验证码地址拼接爬虫实战爬虫架构modelmain解析htmlparse数据库操作程序db近期,有人将本人博客,复制下来,直接上传到百度文库等平台。 本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接) 源码请联系邮箱:1563178220@qq.com抓包介绍本人已经写了几篇模拟登陆的程原创 2016-11-24 21:53:54 · 17377 阅读 · 20 评论 -
网络爬虫中的验证码识别
网络爬虫遇到的验证码在写网络,爬虫时,遇到很多网站存在验证码的情形,有其是比较烦的是,爬取数据的每一页都有验证码,如果只有登陆时,存在验证码,这个很好解决,只需将验证码获取后手动输入就行。 但对于每页都有的,这种方式就不能够解决了,最简单的方式,是自动识别验证码,如果验证码识别成功,能过获得数据,则进行解析,如果验证码没办法识别,则刷新一次验证码,继续识别,直到识别验证码成功,并获得数据。 类似原创 2017-09-26 20:35:54 · 5449 阅读 · 0 评论 -
selenium模拟登陆时截取验证码
模拟登陆时,经常会遇到有验证码的问题,那么就需要把验证码给截取下来。如下为截取验证码程序,该程序的原始地址为:http://www.cnblogs.com/donaldlee2008/p/5304504.html有需要配置运行程序的请联系我:1563178220@qq.compackage login;import java.awt.image.BufferedImage;import java.原创 2017-09-09 14:17:42 · 5018 阅读 · 4 评论 -
淘宝网或阿里巴巴模拟登陆获取数据
近期,有人将本人博客,复制下来,直接上传到百度文库等平台。 本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)源码如有需要请联系:1563178220@qq.com所获得的数据如下图所示,为所要爬取的阿里巴巴供应商数据。在爬取之前必须模拟登陆阿里巴巴网站。 工程目录结构模拟登陆程序如下程序,主要采用selenium工具进行模拟原创 2017-08-30 09:09:39 · 12659 阅读 · 7 评论 -
爬虫如何实现每天爬取,定点爬取[以股票数据为例]
分析抓取的数据抓包框架modelmainutilparsedb问题所在解决方法jobjobmain近期,有人将本人博客,复制下来,直接上传到百度文库等平台。 本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)分析抓取的数据本文是以东方财富网的数据为例,这里只做技术学习使用,请勿滥用。如本文要抓取的数据是东方原创 2017-01-21 16:21:56 · 30941 阅读 · 8 评论 -
Quartz实线定期运行程序(Java)
Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便。如下是写的一个样例程序,定时输出 hello world:package timeutil;import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionCon原创 2016-10-02 15:26:44 · 2821 阅读 · 0 评论 -
东方财富网股票数据爬虫
所要爬的数据描述如下图所示,所要爬的第一个数据是每个股票每日均线对应的MA5,MA10,M20,M30的数据。 其次,需要爬取股票每日的BOLL的数据,包括BOLLUP,BOLLMB,BOLLDN 再者,爬取的数据有每个股票对应的开盘,最高,最低,收盘等数据。 main程序package navi.main;/** * @author:合肥工业大学 管理学院 钱洋 * @email:15原创 2017-12-23 16:17:08 · 15870 阅读 · 2 评论 -
网络爬虫ip代理服务器【程序样例】
爬虫有的时候会遇到被禁ip的情况,这个时候你可以找一下代理网站,抓取一下ip,来进行动态的轮询就没问题了,也可以用别人做好的第三方ip代理平台,比如说crawlera,crawlera是一个利用代理IP地址池来做分布式下载的第三方平台。【具体介绍请看这篇博客:http://blog.csdn.net/djd1234567/article/details/51741557】package daili;原创 2017-02-09 12:28:48 · 4951 阅读 · 0 评论 -
网络爬虫之Url含有中文如何转码
在搞爬虫时,有时会遇到url中含有中文字符,请求会出错,那么就需要对含有中文的url进行转码。以下,以科学网为例,如下图所示: 可以看到,url中含有中文,如下写了一个样例程序,将url中对应的中文进行转码,而其他不进行转码。package collectip;import java.io.UnsupportedEncodingException;import java.util.Arra原创 2017-02-10 22:22:43 · 7949 阅读 · 0 评论 -
网络爬虫生成代理ip
代理写网络爬虫时,经常会遇到ip频繁访问被封的问题,经常使用的解决办法就是代理ip。为此,我写了一个随机生成一个可用代理ip的样例程序。程序package proxy;import java.io.IOException;import java.net.URISyntaxException;import java.util.ArrayList;import java....原创 2018-05-11 19:37:59 · 2215 阅读 · 3 评论 -
批量从网上下载图片、zip等文件到本地[java爬虫]
程序public static void downloadBill(HFUTRequest httprequest,String url,String id) throws IOException{ File fileDir=new File("E:\\zipFile"); if(!fileDir.exists()){ fileDir.mkdi原创 2018-03-29 21:20:48 · 3684 阅读 · 1 评论 -
selenium的安装
安装火狐首先,selenium要求火狐的版本不能太高,如果火狐的版本过高,就会出现以下问题:selenium版本与对应firefox版本匹配的记录。各个版本的火狐下载地址为:http://ftp.mozilla.org/pub/firefox/releases/可以看到支持的火狐版本。安装selenium首先,打开selenium官网 http://www.seleniumhq.org/downlo原创 2017-08-21 20:12:06 · 1091 阅读 · 0 评论 -
java网络爬虫连接超时解决[实战程序]
在网络爬虫中,经常会遇到如下报错。即连接超时。针对此问题,一般解决思路为:将连接时间、请求时间设置长一下。如果出现连接超时的情况,则在重新请求【设置重新请求次数】。Exception in thread "main" java.net.ConnectException: Connection timed out: connect下面的代码便是使用httpclient解决连接超时的样例程序。直接上程序原创 2017-02-10 20:51:46 · 7327 阅读 · 0 评论 -
网络爬虫中X-CSRF-Token和Status 403问题解决方案(Java或Python)
本文作者:合肥工业大学 电子商务研究所 钱洋 email:1563178220@qq.com 。内容可能有不到之处,欢迎交流。未经本人允许禁止转载。文章目录问题情景1和解决方案问题情景2和解决方案问题情景1和解决方案**在很多POST请求中,经常会加入一些字段来控制会话或者数据的表单提交。**例如,在京东的模拟登陆中,并不是你在Java或者python程序中,直接输入用户名密码就能登陆成...原创 2019-08-03 11:34:43 · 6963 阅读 · 1 评论