实现语言:Java
模拟HTTP请求:HttpClient 4.0
目标页面结构分析、HTTP请求头信息分析:Firefox + firebug / Chrome(F12 开发者模式)
HTML解析:Jsoup
基本思路
网络爬虫的基本思路是:爬虫线程从待抓取URL队列中拿取一个URL -> 模拟浏览器GET请求到目标URL -> 将网页内容下载回来 -> 然后对页面的内容进行解析、获取目标数据保存到相应的存储 -> 再以一定的规则从当前抓取的网页中获取接下来需要继续爬取的URL。
当然以上思路是建立在爬取过程无需模拟登录、被爬的网站比较善良不会做一些“反爬”的工作的基础上,然而现实中,模拟登录有时还是非常重要的(如新浪微博);不会反爬的网站也少之又少,当频访问站点时,可能会被冻结账号、封IP、返回“系统繁忙”“请慢点儿访问”等信息。因此需要对爬虫进行健壮性增强:增加对反爬信息的处理、动态切换账号/IP、访问时间delay等。
程序架构
由于模拟登录模块比较复杂,并且不同的网站实现的机制也不尽相同,因此这里只给出一个示意图,下文主要针对不需要进行登录的爬虫进行分析。
Worker:每一个worker就是一个爬虫线程,由主线程SpiderStarter创建
Login(可选):爬虫模拟登录模块,可以设置一个账号队列,一旦账号被冻结,则将其放入队列尾部,并从头部获取一个新账号再次登录。队列的长度需 >= 账号冻结时间 / 每个账号可以支持的连续爬取时间
Fetcher:爬虫模拟浏览器发出GET URL请求,下载页面
Handler:对Fetcher下载的页面进行初步处理,如判断该页面的返回状态码是否正确、页面内容是否为反爬信息等,从而保证传到Parser进行解析的页面是正确的
Parser:对Fetcher下载的页面内容进行解析,获取目标数据
Store:将Parser解析出的目标数据存入本地存储,可以是MySQL传统数据库,也可以Redis等KV存储
待抓取队列:存放需要抓取的URL
已抓取队列:存放已经抓取到的页面的URL
程序流程图
以下为爬虫实现的流程图,图中绿色方框代表这几个步骤是在同一个模块中的,模块名称用红字表明。
相关推荐
总的来说,HttpClient 4.0是Java开发者处理HTTP请求的强大工具,其高效的连接管理和异步操作能力使其在各种网络应用场景中表现出色。了解并熟练掌握HttpClient的使用,对于提升Java应用的网络通信效率具有重要意义。
《HttpClient 4.0:Java 开发中的网络通信利器》 HttpClient 4.0 是一个由 Apache 软件基金会开发的 Java 库,专为处理 HTTP 协议而设计。这个版本在功能、性能和易用性上都有显著提升,是 Java 开发者进行网络通信...
【作品名称】:基于Java + HTTPClient 4.0,采用MySQL存储爬取数据,支持多进程并发执行的新浪微博爬虫 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...
本篇文章将详细介绍HTTPClient 4.0的使用方法,包括其核心概念、基本操作和示例代码。 一、核心概念 1. HttpClient实例:HttpClient对象是执行HTTP请求的核心,负责建立连接、发送请求和接收响应。通过`...
1.含有官方HttpClient4.0的jar包 2.有之前HttpClient3.0的jar包,就是import importorg.apache.commons.*; 3.包含jsoup,解析HTML的jar包 4.包含jcookie.jar及jtidy-r938.jar的jar包.
HttpClient 4.0版本是其一个重要里程碑,它提供了更加强大、灵活和稳定的网络通信功能。在这个版本中,HttpClient引入了许多改进和新特性,以满足更广泛的使用场景。接下来,我们将深入探讨HttpClient 4.0的核心概念...
httpclient-4.0.jar, httpclient-4.0.jar, httpclient-4.0.jar
【标题】"基于JAVA的网络爬虫程序源代码"是一个涉及网络爬虫技术的Java编程项目,它提供了实现网络爬虫功能的完整源代码。网络爬虫是互联网上的自动化工具,用于系统地浏览、抓取网页信息并存储到本地数据库或文件中...
《HttpClient 4.0 使用详解:访问开心网组件实例》 HttpClient 是 Apache 开源基金会提供的一个 HTTP 客户端库,被广泛应用于 Java 开发中,用于执行 HTTP 请求。HttpClient 4.0 版本引入了许多改进和新特性,使得...
在探讨HttpClient 4.0的`post()`方法中四个关键“头信息”的设置之前,我们首先需要理解HttpClient是什么以及它在Java开发中的作用。 ### HttpClient简介 HttpClient是Apache的一个开源项目,它为Java应用程序提供...
HttpClient是Apache基金会开发的一个HTTP客户端库,主要用于处理HTTP请求和响应。HttpClient 4.0版本引入了许多改进和新特性,...开发者可以通过深入学习HttpClient 4.0,提升网络编程的能力,更好地处理网络通信问题。
【Java天气预告】项目是基于htmlparser2.0和httpclient4.0这两个库实现的,主要用于抓取和解析网络上的天气信息。这个项目对于学习Java网络编程和HTML解析非常有帮助,它揭示了如何利用HTTP协议获取网页数据以及如何...
资源名字:基于java+Jsoup+HttpClient的网络爬虫技术的网络新闻分析系统设计与实现(源码+文档)_MySQL_网络爬虫_数据挖掘.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百...
在Java中实现网络爬虫涉及多个关键知识点,对于初学者和希望深化Java基础的开发者来说,这是一个非常实用的学习项目。以下将详细阐述这些知识点: 1. **Java基础知识**:首先,你需要熟悉Java编程语言的基本语法、...
httpclient-4.0-beta1.jar
Android升级后旧版本的httpclient4.0 apache-mime4j-0.6 commons-codec-1.4 commons-logging-1.1.1 httpclient-4.0.1 httpcore-4.0.1 httpmime-4.0.1
在提供的链接中,有一篇名为"azure2a.iteye.com/blog/901363"的博客文章,它应该详细介绍了如何结合HTMLPARSER和HTTPCLIENT实现网络爬虫的具体步骤和代码示例。阅读这篇博客将有助于你深入理解这两个库的用法,并...
本项目利用Apache HttpClient库的4.0-alpha2版本,旨在构建一个基于HTTP协议的网站分析器,以便对网页内容进行抓取、解析和处理。HttpClient是一个功能强大的Java库,它提供了丰富的API来实现复杂的HTTP请求,包括...
java爬虫,代码写的有点丑,反正是能用。 今天给大家分享一个多线程的知识点,和线程池,最近任务是写爬虫,五百个网址,循环很慢,然后考虑用多线程,今天看了一下多线程,氛围继承thread 和实现runnuble接口,...