1. 网络爬虫简介

网络爬虫(web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

1.1 爬虫入门程序

  1. JDK1.8
  2. IntelliJ IDEA
  3. DEA自带的Maven

    环境准备

    创建Maven工程itbuild-crawler-first并往pom.xml文件中添加依赖

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0</modelVersion>
    6. <groupId>cn.itbuild</groupId>
    7. <artifactId>itbuild-crawler-first</artifactId>
    8. <version>1.0-SNAPSHOT</version>
    9. <dependencies>
    10. <!--引入jar包-->
    11. <dependency>
    12. <groupId>org.apache.httpcomponents</groupId>
    13. <artifactId>httpclient</artifactId>
    14. <version>4.5.2</version>
    15. </dependency>
    16. <dependency>
    17. <groupId>org.slf4j</groupId>
    18. <artifactId>slf4j-log4j12</artifactId>
    19. <version>1.7.25</version>
    20. </dependency>
    21. </dependencies>
    22. </project>

    添加log4j.properties ```java

    A1 在控制台显示日志

    log4j.rootLogger=DEBUG,A1 log4j.logger.cn.itbuild=INFO

log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH??ss,SSS} [%t] [%c]-[%p] %m%n

  1. <a name="sLIxt"></a>
  2. ###### <br />编写代码
  3. CrawlerFirst.java
  4. ```java
  5. package com.test;
  6. import org.apache.http.HttpEntity;
  7. import org.apache.http.client.methods.CloseableHttpResponse;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.impl.client.CloseableHttpClient;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.apache.http.util.EntityUtils;
  12. import java.io.IOException;
  13. import java.net.http.HttpClient;
  14. import java.util.Map.Entry;
  15. /**
  16. * @program: test
  17. * @description:
  18. * @author: liulq
  19. * @create: 2021-12-30 13:45
  20. */
  21. public class Test {
  22. public static void main(String[] args) throws Exception {
  23. //打开浏览器
  24. CloseableHttpClient httpClient = HttpClients.createDefault();
  25. //输入网址
  26. HttpGet httpGet = new HttpGet("https://www.bilibili.com/");
  27. //按回车,发起请求.返回相应
  28. CloseableHttpResponse response = httpClient.execute(httpGet);
  29. //解析响应,获取数据
  30. //判断状态码是否是200
  31. if(response.getStatusLine().getStatusCode() ==200){
  32. HttpEntity entity = response.getEntity();
  33. String string = EntityUtils.toString(entity, "utf-8");
  34. System.out.println(string);
  35. }
  36. }
  37. }

1.2 网络爬虫介绍

在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成木也会提高。如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。
网络爬虫(Web crawler)也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚木,可以自动采集所有其能够访问到的页面内容,以获取相关数据。
从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

1.3 为什么要学习网络爬虫

我们初步认识了网络爬虫,但是为什么要学习网络爬虫呢?只有清晰地知道我们的学习目的,才能够更好地学习这一项知识。在此,总结了4种常见的学习爬虫的原因:

可以实现搜索引擎

我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,即实现了私人的搜索引擎。

大数据时代,可以让我们获取更多的数据源

在进行大数据分析或者进行数据挖掘的时候,需要有数据源进行分析。我们可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,再进行更深层次的数据分析,并获得更多有价值的信息。

可以更好地进行搜索引擎优化 (SEO)

对于很多SEO从业者来说,为了更好的完成工作,那么就必须要对搜索引擎的工作原理非常清楚,同时也需要掌握搜索引擎爬虫的工作原理。
而学习爬虫,可以更深层次地理解搜索引擎爬虫的工作原理,这样在进行搜索引擎优化时,才能知己知彼,百战不殆。

有利于就业, 爬虫工程师需求量大, 发展空间广

从就业来说,爬虫工程师方向是不错的遥择之一,因为目前爬虫工程师的需求越来越大,而能够胜任这方面岗位的人员较少,所以属于一个比较紧缺的职业方向,并且随着大数据时代和人工智能的来临,爬虫技术的应用将越来越广泛,在未来会拥有很好的发展空间。