爬虫介绍-爬虫导入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

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

相关文章
|
1月前
|
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)等。
17 0
|
7月前
|
开发框架 前端开发 Java
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
【IntelliJ IDEA】idea 实用功能Auto Import:自动优化导包(自动删除、导入包)
170 0
|
7月前
|
前端开发 索引
【IntelliJ IDEA】idea导入node_modules卡死,idea 忽略 node_modules 索引
【IntelliJ IDEA】idea导入node_modules卡死,idea 忽略 node_modules 索引
194 0
|
8月前
|
Java 应用服务中间件 Android开发
eclipse项目导入到idea
eclipse项目导入到idea
205 0
|
5月前
|
关系型数据库 MySQL 应用服务中间件
Intellij IDEA 导入公司老web项目 从eclipse里
Intellij IDEA 导入公司老web项目 从eclipse里
45 0
|
6月前
|
Java 应用服务中间件 Maven
Eclispe里导入Idea的项目
Eclispe里导入Idea的项目
|
6月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
69 0
|
7月前
|
Java Maven
IntelliJ IDEA 导入maven项目
IntelliJ IDEA 导入maven项目
61 0
|
7月前
|
Java Maven 开发工具
【IntelliJ IDEA】idea修改设置默认maven,解决每次新建和导入项目都需要重新配置maven
【IntelliJ IDEA】idea修改设置默认maven,解决每次新建和导入项目都需要重新配置maven
1193 0
|
11月前
|
Java
(3连bug)接上文, 导入idea之前的旧项目,所有.class文件package路径都出现多了main.
这是重装idea之后打开第二个之前大学开发的外卖程序, 还是出现上文一模一样的问题
159 1
(3连bug)接上文, 导入idea之前的旧项目,所有.class文件package路径都出现多了main.