爬虫介绍-爬虫导入IDEA+爬虫效果|学习笔记

简介: 快速学习爬虫介绍-爬虫导入IDEA+爬虫效果

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):爬虫介绍-爬虫导入IDEA+爬虫效果】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/670/detail/11619


爬虫介绍-爬虫导入IDEA+爬虫效果

 

内容简介:

一、测试

二、爬虫导入IDEA

三、爬虫效果

 

一、测试

上节把数据采集的脚本已经彻底写完了,通过这种方式获取一个一个的数据,然后把它拼一个字符串,然后打到 kafka 里面,就是数据采集阶段。再往后看,需要用浏览器进行测试,这已经已经测过了,在浏览器中输入 nginx ip 地址,

如下图所示:

image.png

上述 ip 已经输入进去,并能够把数据打进去。然后写一个测试程序这个不用写,直接通过 kafka 的消费端能看到数据流进去就可以了,这个能看到数据,就说明打通,而且是有数据以上这是测试。

 

二、爬虫导入IDEA

1、爬虫导入

爬虫的总体目标就是为了识别爬虫,既然要去识别,就有一个爬虫,那么爬虫在哪儿?

实际上爬虫已经准备好了,点击进入反爬虫项目当中素材文件夹素材当中有一个项目代码,项目代码里面一个爬虫文件夹这里面的工程就是给准备好的爬虫所以只需把这个爬虫引到项目中去,当前webproject 是提供的企业端的界面,就是界面的可视化的 web 工程,

如下图所示:

image.png

2、单程和往返的内涵

现在把准备好的爬虫引进来,打开 open 找到项目,从一个新的窗口上把爬虫进来,便反爬虫项目真正提供的爬虫的代码,先简单介绍下,把代码打开,代码里面其实提供了两个核心代码,一个是SpiderGoAirCN ,这个是国内查询的单程航班,后面的另一个核心代码 SpiderGoAndBackAirCN 是国内查询的往返航班,一个是单程的,一个是往返的,单程和往返是什么意思?

前面简单介绍过看过,再来回顾一下,现在以去哪儿网为例,去哪儿网公司的首页里在查询时,不管是国际还是国内的,在查询时都提供了是单程还是往返的业务需求,若你要购买飞机票,买单程还是往返是可选的,这是去哪儿网首页,

如下图所示:

image.png

南方航空里面也分为单程和往返,单程和往返可以自由选择,如下图所示:

image.png

这个是企业里面进行购票时,必须填信息,是单程还是往返要搞清楚,爬虫就是为了模拟这两种场景,单程就只是过去,回来时再购票;往返就是去的票票同时买,同时买两个。

 

三、爬虫效果

1、爬虫内部解析

然后再来看爬虫内部,在 SpiderGoAirCN 内部代码如下所示:

package cn.itcast.spider.csair;

import ...

/**

* 查询国内单程航班

*/

public class SpiderGoAirCN {

public static void main(String[] args) throws Exception {

for (int i = 0; i < 50000;i++) {

system.out.println(>>>>>>>>>>>>>>>>>>>>>>>  +i);

//请求查询信息

spiderQueryao();

//请求 html

spiderHtml();

//请将 js

spiderJs();

//请求 css

spiderCss();

//请求 png

spiderPng();

//请求 jpg

spiderJpg();

thread.sleep( millis: 1000);

}

}

里面实际就是一个 for 循环,循环多次,从第1次一直5万次,然后每次中间睡一秒钟,每两次之间 sleep 一秒钟,然后前面做输出,即输出是第几次,后面做请求查询信息、请求 html 、请求js 、请求 css 、请求 png 、请求 jpg ,每一个循环有很多种查询动作,这个是循环里面。

2、Queryao 内部

接下来进入里面来看首先看 Queryao 里面, Queryao 里面实际上就是一次循环第一次访问内容里面,如下所示:

public static void spiderQueryao() throws Exception {

//1.指定目标网站

String url = “http://192.168.2.141/B2C40/query/jaxb/direct/query.ao”;

//2.发起请求

HttpPost httpPost = new HttpPost(url));

//3.设置请求次数

httpPost.setHeader(Time-Local,getlocalDateTime());

//httpPost.setHeader(Request,POST /B2C40/query/jaxb/direct/query.ao.HTTP/

httpPost.setHeader(Request Method,”POST“);

httpPost.setHeader(Content-Type,

application/x-www-form-urlencoded;charset=UTF-8);

httpPost.setHeader(

Refer,

“http://b2c.csair.com/B2C40/modules/bookingnew/main/flightSelectDirect;

+ getGoTime() + &at=i&at=0&it=0);

httpPost.setHeader(Remote Address, 192.168.2.1);

httpPost.setHeader(

User-Agent,

把项目导进来以后,需要把这个项目修改,这是爬虫,那爬哪一台服务器? ip 是多少?

需要在 Queryao 里面,上文代码中可以看到个string 类型的 URL 这里 http 里面跟了192.168的 ip

把这个ip 改成192.168的 nginx 的服务器的 ip 刷新界面,实际上就是界面了一个请求,然后了192.168.100.160的服务器上去访问nginx 所以现在要爬虫访问节点,只需把把192.168.2.141的 ip 改成192.168.100.160放得下找到了,同样自己电脑上 nginx上的 ip 是多少,就改成多少,以上这个 Queryao 的。

3、Html 内部

还有 html 的,点进去内容如下:

public static void spiderHtml() throws Exception {

//1.指定目标网站

String url = “http://192.168.2.141/B2C40/modules/bookingnew/main/flightSelectDirect.html”;

//2.发起请求

HttpPost httpPost = new HttpPost(url));

//3.设置请求次数

httpPost.setHeader(Time-Local,getLocalDateTime());

//httpPost.setHeader(Request,

POST /B2C40/query/jaxb/direct/query.ao.HTTP/1.1)

httpPost.setHeader(Request Method,”POST“);

httpPost.setHeader(Content-Type,

application/x-www-form-urlencoded;charset=UTF-8);

httpPost.setHeader(

Refer,

“http://b2c.csair.com/B2C40/modules/bookingnew/main/flightSelectDirect;

+ getGoTime() + &at=i&at=0&it=0);

httpPost.setHeader(Remote Address, 192.168.2.1);

httpPost.setHeader(

User-Agent,

可以看到 html 也有一个2.141,所以把它改成100.160。

4、Js 内部

再往前走,有 js ,点击进去内容如下:

public static void spiderJs() throws Exception {

//1.指定目标网站

String url = “http://192.168.2.141/B2C40/dist/main/main/modules/common/requireConfig.js”;

//2.发起请求

HttpPost httpPost = new HttpPost(url));

//3.设置请求次数

httpPost.setHeader(Time-Local,getLocalDateTime());

//httpPost.setHeader(Request,

POST /B2C40/query/jaxb/direct/query.ao.HTTP/1.1)

httpPost.setHeader(Request Method,”POST“);

httpPost.setHeader(Content-Type,

application/x-www-form-urlencoded;charset=UTF-8);

httpPost.setHeader(

Refer,

“http://b2c.csair.com/B2C40/modules/bookingnew/main/flightSelectDirect.html;

httpPost.setHeader(Remote Address, 192.168.2.1);

httpPost.setHeader(

User-Agent,

Mozilla/5,0 (Windows NT 10.0;Win64; x64)AppleWebKit/537.36(KHTML.like

可以看到它也有一个2.141,也把它改成100.160,然后服务器的ip也要改成100.160。

5、爬虫效果执行

再往后,实际上 css 也有这个内容,也是将其改为100.160, png 、jpg 也都一样,历史的项目中有2.141也都改成100.160个,到这里反爬虫上的爬虫的 IP 改成服务器上的 IP 即192.168.100.160。

改完之后,实际上爬虫就准备好了,接下来让它跑一下,实际上把它爬虫引进来以后,直接把里面的 IP 改成 nginx服务器 IP 就可以,然后来跑爬虫,直接右键执行 run 就可以了,先把爬虫的 kafka 的消费者界面打开,现在来执行爬虫,先看国内单程的,右键开始 run 执行时,这时它应该会在后台去访问100.160,访问以后 kafka 界面应该有数据刷起来,循环一次就访问六次,即循环一次就有6条数据进来,现在右键执行,

后台界面如下图所示:

image.png

可以看到它是一秒钟刷一次,每次都刷好多内容,这就说明爬虫达到效果,这个就是爬虫,本节简单的将爬虫做了一个介绍。

相关文章
|
6月前
|
Java 编译器 开发工具
Java基础学习笔记——idea篇
JDK由JRE(包含JVM和核心类库)和开发工具箱(如javac编译器和java运行工具)组成。Java项目结构包括Project、Module、Package和Class。IDEA快捷键包括:生成main方法(main psvm)、复制代码(Ctrl+D)、删除代码(Ctrl+Y/X)、格式化代码(Ctrl+Alt+L)、重命名(Shift+F6)等。
51 0
|
3月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
1月前
|
Java Devops 持续交付
Maven学习笔记(二):Maven基础(基于IDEA)
【10月更文挑战第1天】Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。上一篇简单介绍了Maven的基础知识,本文主要介绍IDEA上的实际使用场景。内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。仅供参考。
169 0
Maven学习笔记(二):Maven基础(基于IDEA)
|
3月前
|
Java Maven 数据库
IDEA中如何导入jar包、IDEA中找不到对应类改怎样解决?(详细图解过程)
这篇文章提供了在IntelliJ IDEA中导入jar包的详细图解过程,包括当IDEA找不到对应类时的解决方法。内容涵盖了未加入jar包时程序报错的情况、加入jar包后成功启动的效果,以及如何解决驱动问题,确保使用正确版本的数据库驱动。
IDEA中如何导入jar包、IDEA中找不到对应类改怎样解决?(详细图解过程)
|
4月前
|
Java Maven
idea导入maven项目结构不全
idea导入maven项目结构不全
169 6
|
4月前
|
Java Maven
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
SpringBoot第一次导入项目,Maven依赖全爆红,该怎样解决,idea2019.3版本,必须用application2.7.6或者以下
|
5月前
|
XML Java 应用服务中间件
idea与eclipse项目相互导入方式
idea与eclipse项目相互导入方式
60 1
|
4月前
|
Java Maven
第一次导入项目,从gitee拉取的代码无法拉取怎么解决,idea如何导入项目,如何跑拉取的项目,如何使用Maven导入项目,如何回到idea首页,如何导入第一次的项目,拉取的代码出现了橘黄色图标,图片
第一次导入项目,从gitee拉取的代码无法拉取怎么解决,idea如何导入项目,如何跑拉取的项目,如何使用Maven导入项目,如何回到idea首页,如何导入第一次的项目,拉取的代码出现了橘黄色图标,图片
|
5月前
|
Java 应用服务中间件 Android开发
【Eclipse IDEA】IDEA 导入 eclipse Web项目
【Eclipse IDEA】IDEA 导入 eclipse Web项目
|
6月前
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
80 1