Java实现网络爬虫-Java入门|Java基础课程

目标

  1. 网络爬虫的是做什么的?
  2. 手动写一个简单的网络爬虫;

1. 网络爬虫

1.1. 名称

  • 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚
    本。
  • 另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

1.2. 简述

  • 网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到
    在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有
    的网页都抓取完为止。
  • 如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
  • 所以要想抓取网络上的数据,不仅需要爬虫程序还需要一个可以接受”爬虫“发回的数据并进行处理过滤的服务
    器,爬虫抓取的数据量越大,对服务器的性能要求则越高。

2. 流程

  • 网络爬虫是做什么的? 他的主要工作就是 跟据指定的url地址 去发送请求,获得响应, 然后解析响应 , 一方面从
    响应中查找出想要查找的数据,另一方面从响应中解析出新的URL路径,然后继续访问,继续解析;继续查找需要的
    数据和继续解析出新的URL路径 .
  • 这就是网络爬虫主要干的工作. 下面是流程图:

 

 

通过上面的流程图 能大概了解到 网络爬虫 干了哪些活 ,根据这些 也就能设计出一个简单的网络爬虫出来.

一个简单的爬虫 必需的功能:

  1. 发送请求和获取响应的功能 ;
  2. 解析响应的功能 ;
  3. 对 过滤出的数据 进行存储 的功能 ;
  4. 对解析出来的URL路径 处理的功能 ;

2.1. 关注点

  • 爬虫需要关注的三个点:
    • 对抓取目标的描述或定义;
    • 对网页或数据的分析与过滤;
    • 对URL的搜索策略

 

3. 分类

  • 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:
    • 通用网络爬虫(General Purpose Web Crawler)
    • 聚焦网络爬虫(Focused Web Crawler)
    • 增量式网络爬虫(Incremental Web Crawler)
    • 深层网络爬虫(Deep Web Crawler)。
    • 实际的网络爬虫系统通常是几种爬虫技术相结合实现的。

 

4. 思路分析

  • 下面我用我们的官网将跟大家一起来分析下如何实现这样的一个爬虫:

 

首先观察我们爬虫的起始页面是:http://www.wanho.net/a/jyxb/

  • 分析页面

所有的喜报信息的URL用XPath表达式来表示就是://div[@class='main_l']/ul/li

相关数据

  • 标题:用XPath表达式来表示 //div[@class='content']/h4/a/text()
  • 描述:用XPath表达式来表示//div[@class='content']/p/text()
  • 图片:用XPath表达式来表示 //a/img/@src

好了,我们上面已经将在代码中需要获取的关键信息的XPath表达式都找到了,接下来就可以正式写代码来实现了

5. 代码实现

代码实现部分采用webmagic框架,因为这样比使用基本的的Java网络编程要简单得多注:关于webmagic框架可以看一下面讲义

5.1. 代码结构

 

5.2. 程序入口

Demo.java

/**
 * 程序入口
 */
public class Demo {
​
    public static void main(String[] args) {
        // 爬取开始
        Spider
        // 爬取过程
        .create(new WanhoPageProcessor())
        // 爬取结果保存
        .addPipeline(new WanhoPipeline())
        // 爬取的第一个页面
        .addUrl("http://www.wanho.net/a/jyxb/")
        // 启用的线程数
        .thread(5).run();
    }
​
}

5.3. 爬取过程

  • WanhoPageProcessor.java
package net.wanho.wanhosite;
​
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
​
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Html;
​
public class WanhoPageProcessor implements PageProcessor {
​
    // 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等
    private Site site = Site
            .me()
            .setTimeOut(10000)
            .setRetryTimes(3)
            .setSleepTime(1000)
            .setCharset("UTF-8");
​
    // 獲得站點
    @Override
    public Site getSite() {
        return site;
    }
​
    
    
    //爬取過程
    @Override
    public void process(Page page) {
        //获取当前页的所有喜报
        List<String> list = page.getHtml().xpath("//div[@class='main_l']/ul/li").all();
        //要保存喜报的集合
        Vector<ArticleVo> voLst = new Vector<>();
     
  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java爬虫是一种常用的网络数据抓取工具,用于获取网站上的信息并进行处理。学习Java爬虫,最好以视频教程为辅助,有系统的讲解和示例代码能更好地帮助理解和掌握相关知识。以下是关于Java爬虫入门到精通视频下载的相关建议。 网上有很多提供Java爬虫教程的平台,包括一些知名的在线学习网站、视频教育平台以及技术社区等。在这些平台上,你可以找到很多适合不同水平的视频教程,从入门到进阶都有涵盖。 首先,你可以在这些平台上搜索关键词"Java爬虫",然后在结果中筛选出类型为视频课程的内容。浏览不同课程的介绍、评价和课时等内容,选择适合自己的教程。评价好、内容丰富,并且有系统的教学大纲和实例代码是选择的重要参考因素。 其次,由于你需要从入门到精通,所以建议选择一套连贯性强的课程,例如一个系列教程,或者一个精心设计的教学计划。这样能够确保学习的完整性,避免学习的断层和重复。 在下载视频教程前,应确保你的设备有足够的空间来存储这些视频文件,并且有可用的网络或者下载工具。很多教学平台提供视频下载的功能,你可以选择购买或者租赁这些课程的视频。另外,你也可以通过一些第三方软件或者在线工具来下载这些教程,注意选择安全可靠的资源。 在学习过程中,要多动手实践,在教学视频中的每个章节或者课时后进行相关练习。通过实际操作来加深理解和熟练相关技术。同时,要多阅读官方文档和相关书籍来弥补教学视频中没有涉及到的知识点,提升自己的编程水平。 总之,Java爬虫是一个需要系统学习和实践的技术领域。通过下载视频教程并按照教学计划逐步学习,结合实际练习和深入阅读相关资料,你将能够在Java爬虫领域逐渐达到精通的水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值