java 爬虫大型教程(一)

article/2025/8/27 5:51:56

java 爬虫大型教程(一)

写在开始前,既然是大型教程,那就从最初始的环境变量开始搭建说起。

电脑环境:我的电脑是macbook pro,因此系统环境变量配置是和Windows不一样的,如果你的电脑是Windows系统,可以百度下相关环境变量配置。

爬虫框架:使用的是webmagic,这是国内不错的爬虫框架,借鉴于python的scrapy框架。

Java环境搭建

首先提一句,从2019年1月开始更新的版本,jdk8 u201开始对公司用户来说是收费的!!!因此如果你的公司没有向oracle申请购买的话,一定要使用jdk8 u191及其以下的jdk版本,不然oracle是可以告你的公司的哦。当然,如果你是个人学习用的话,那就随便了。

首先我列一下jdk8 u191的下载地址,记得保存好。地址:

https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

Java的下载安装配置就不说了,实在太基础了,安装成功后.

MacBook-Pro:~ duke$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

maven环境搭建

1.下载安装包

官方下载地址:https://maven.apache.org/download.cgi

如图:
maven-1

2.解压指定位置

你可以把maven解压至任何地方,这里我把maven放在了/Users/duke/Documents/Software 这个文件夹里,解压命令不需多言。

我只简单的描述一下maven,Java程序运行需要各种各样的jar包,你可能要费心费力的去处理jar包和环境配置问题,但是使用maven就可以解决这个问题。如果你使用过git,就知道代码首先是要commit本地仓,然后在push到git远程仓。maven是相同的道理,它会有个本地仓,如果java代码中使用了相关jar包,会首先在本地仓寻找,如果没找到,会向远程仓请求,下载到本地仓供使用。

3.环境配置

① 打开终端 ,输入vim ~/.bash_profile
② 输入i进入编辑模式,然后输入 Maven 的环境变量
export M2_HOME="/Users/duke/Documents/Software/apache-maven-3.6.0"
export PATH="$M2_HOME/bin:$PATH"
③ 编辑完后,按 esc 退出编辑,并输入 :wq 保存并退出。
④ 输入 source ~/.bash_profile 使环境变量生效。
⑤ 输入 mvn -v 查看 Maven 否安装成功。

maven-2

4.更换maven下载源

① 用IDEA或Eclipse打开/Users/duke/Documents/Software/apache-maven-3.6.0/conf/settings.xml
② 找到mirrors元素(150行左右), 在它里面添加子元素mirror
<mirror><id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

maven-3

IDEA使用maven创建简单的爬虫项目

第一步:只是想使用maven来下载相关包,所以不用选中create from archetype,点击next,如下图:
maven-4

第二步:GroupId(一般填反转后公司域名)和ArtifactId(项目名)还有Version,这三个属性目的是标识你的项目的唯一性,点击next,如下图:

maven-5

第三步:以上配置按需修改,一般保持默认,很简单就是保存项目的路径,点击Finish,如下图:
maven-6

第四步:在接下来的面板中选择本地的maven/Users/duke/Documents/Software/apache-maven-3.6.0

(如果是第一次创建项目,会有预创建过程,控制台会显示在从阿里云下载模版,去喝杯咖啡等待即可)

第五步:进入了首页,原始状态如下图:

maven-7

第六步:添加坐标:

   <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

然后点击右下角import changes,加载完成后,右下角import changes消失,如下图:
maven-8

第七步:配置log4j.properties

我按照我的习惯,新建一个config文件夹,将其标记为source root

maven-9

配置log4j

# priority  :debug<info<warn<error
#you cannot specify every priority with different file for log4j 
#log4j.rootLogger=debug,stdout,info,debug,warn,error
#按照你的需要将输出日志等级
log4j.rootLogger=warn,error  #console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss a}]:%p %l%m%n
#info log
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.info.File=./log/info.log
log4j.appender.info.Append=true
log4j.appender.info.Threshold=INFO
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#debug log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.debug.File=./log/debug.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#warn log
log4j.logger.warn=warn
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.warn.File=./log/warn.log
log4j.appender.warn.Append=true
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#error
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.error.File = ./log/error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n

新建log文件夹存放日志(这只是本地测试,如果生产中可以将其流入elk)

ok,所有配置完成,可以书写爬虫代码了!


http://chatgpt.dhexx.cn/article/FLMhJswd.shtml

相关文章

java 爬虫 sessionid_java爬虫实战之模拟登陆

使用jsoup工具可以解析某个URL地址、HTML文本内容&#xff0c;是java爬虫很好的优势&#xff0c;也是我们在网络爬虫不可缺少的工具。本文小编带领大家使用jsoup 实现java爬虫模拟登陆&#xff0c;通过省力的API&#xff0c;很好的实现java爬虫模拟登陆。 一、使用工具&#xf…

java爬虫框架视频_Java爬虫博客采集系统视频教程

资源介绍 教程名称&#xff1a;Java爬虫博客采集系统视频教程xa0 教程目录&#xff1a; 【java爬虫博客采集系统】视频教程第00讲[20分钟] - 系统演示xa0 【java爬虫博客采集系统】视频教程第01讲[08分钟] - 博客爬虫模块Axa0 【java爬虫博客采集系统】视频教程第02讲[21分钟] …

Java版爬虫,爬网页,爬小说,完整教程,一看就会

昨天小编看到了一部不错的小说&#xff0c;但是没有办法下载&#xff0c;只能一页一页地看&#xff0c;于是想到了爬虫&#xff0c;现在Java也有了爬虫的框架&#xff0c;很简单&#xff0c;就算小白也能轻易入门&#xff0c;话不多说&#xff0c;直接上手。 1.首先引入相关依…

java-jsoup爬虫

1. 介绍 Jsoup是Java中的一个包&#xff0c;可以用于爬取页面中的数据 Jsoup爬取数据分为以下几个步骤&#xff1a; 1. 获取所爬取网页的Document对象 2. 找到所爬取数据所在的父级标签&#xff0c;将其从Document对象中解析出来&#xff0c;解析出来的内容放置在Element对象…

java爬虫 教程_Java爬虫其实也很简单,教你实用的入门级爬虫

原标题&#xff1a;Java爬虫其实也很简单&#xff0c;教你实用的入门级爬虫 任何语言都是可以爬虫的&#xff0c;只要你懂的常用的http协议啥的就可以模仿浏览器的行为获取你想要的数据。这里我将教大家一个简单实用的案例&#xff1a;如何获取全民K歌的下载链接。 ps: 这主要是…

java爬虫视频教程_JAVA开发教程:java视频教程java爬虫实战项目 百度网盘

– 源码 – 0 B |- 猫了个咪-更多IT精品课程.html – 41.00 kB |- 猫了个咪–it视频论坛.url – 51 B |- 22_项目优化三&#xff1a;邮件提醒.mp4 – 345.30 MB |- 21_项目优化二&#xff1a;爬虫项目监控[itjc8.com].mp4 – 353.40 MB |- 20-4_项目优化一&#xff1a;解决频繁…

手把手Java爬虫教学 - 1. 了解爬虫

一、什么是爬虫 先来看一下百度百科&#xff0c;了解一下爬虫~ 我们通过爬虫主要的目的就是爬取数据&#xff0c;好比 A 网站、B 网站有我们所需要的内容&#xff0c;但是这两个网站并没有给我们提供接口&#xff0c;那我们怎么能拿到上面的数据呢&#xff1f; 这时候我们就可…

java爬虫教程:模拟用户表单登录

转自&#xff1a;http://xiaolongonly.cn/2016/06/01/Reptile3/ 这个是爬虫教程第三篇&#xff0c;教大家如何模拟用户表单登录。 前期准备&#xff1a; JSOUP 1.83 jar包 Eclipse 任意版本能运行java就行 谷歌浏览器 第一步&#xff1a;依然是分析页面结构 我们要模拟C…

REmap包介绍及使用

2019独角兽企业重金招聘Python工程师标准>>> #REmap包简介 #包安装 #remapH函数 #remapH案例 #get_theme函数 #remapC函数 #markLineControl函数 #markPointControl函数 #remapC案例 REmap包简介 REmap包是R与echart的对接&#xff0c;在R里调用echar的api直接作图&…

用R语言绘制动态地图,代码奉上!(REmap包详解)

options(remap.ak="MY07CLhm3wKi4N2tQ6WP4kzz21BBZagI") 安装包 library(devtools) install_github(badbye/baidumap) install_github(lchiffon/REmap) baidumap包函数说明 getBaiduMap函数 getBaiduMap(location, width = 400, height = 400, zoom = 10, scale = …

remap()

学习自&#xff1a;【OpenCV入门教程之十七】OpenCV重映射 重映射&#xff0c;就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。一般情况下&#xff…

REmap绘制地图

本文出自&#xff1a; http://blog.csdn.net/wzgl__wh/article/details/53108754 REmap这个包是通过调用百度地图API的一个程序包&#xff0c;与Google的ggmap包相比&#xff0c;不用翻墙就可以使用。其函数主要有&#xff1a;remap()&#xff0c;remapB()、remapC()、remapH()…

R语言:使用REmap绘制超炫酷的地图

REmap这个包是通过调用百度地图API的一个程序包,与Google的ggmap包相比,不用翻墙就可以使用。其函数主要有:remap(),remapB()、remapC()、remapH()四个。该程序包目前要github网站上,因此我们需要从github上面下载安装。 install.packages("devtools")#如果安装…

ioremap()

活动地址&#xff1a;CSDN21天学习挑战赛 前言 之前&#xff0c;我们使用 devmem 命令的方式&#xff0c;直接操作寄存器&#xff0c;控制 LED 的亮灭。 今天&#xff0c;我们在内核中使用 ioremap() 来实现该功能。 物理地址 vs 虚拟地址 在嵌入式 Linux 中&#xff0c;通常…

STM32和GD32的GPIO引脚的default(默认) alternate(引脚复用) remap(引脚重映射)三种用法 别把复用和重映射当一回事儿

STM32有很多内置外设&#xff0c;这些外设的外部引脚都是与GPIO复用的。也就是说&#xff0c;一个GPIO如果可以复用为内置外设的功能引脚&#xff0c;那么当这个GPIO作为内置外设使用的时候&#xff0c;就叫做复用 重映射就是引脚重映射&#xff0c;本来每个内置外设都有原来设…

OpenCV函数remap详解

OpenCV函数remap详解 remap的作用是将原影像映射到目标影像的函数。 这是OpenCV文档中的说明。 但这个描述给人的感觉是&#xff0c;云里雾里&#xff0c;到底是需要计算目标到原的映射关系&#xff0c;还是原到目标的映射呢。 经过我的实验发现是需要给出目标到原的映射关系…

remap函数

cvRemap( img1, img1r, mx1, my1 );在这个函数中mx1、my1是由前面函数计算出的校正系数&#xff0c;其指明了具体像素重新分配的位置。在learning opencv的12.3自带程序中可以发现&#xff0c;一般来说my1的值是比较集中的&#xff0c;mx1的值是比较分散的&#xff0c;这满足基…

Python-OpenCV 的 remap函数

恒等映射 result_img 和 原图一模一样 import cv2 import numpy as npimg cv2.imread("OpenCV.png") rows, cols, ch img.shape mapx np.ones(img.shape[:2], np.float32) mapy np.ones(img.shape[:2], np.float32) for i in range(rows):for j in range(cols)…

STM32重映射(Remap)

STM32重映射&#xff08;Remap&#xff09; 在外设的初始化中默认为Default重映射函数复用功能 在外设的初始化中默认为Default 在参考手册中 均有USART1的功能&#xff0c;但是若是想要用PB6与PB7作为USART1_TX与USART1_RX则需要用到重映射。 使用PA9 PA10只需要直接配置就…

Opencv remap函数

Opencv remap函数 函数签名实例应用亚像素信息扭曲特效 函数签名 void cv::remap ( InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode BORDER_CONSTANT, const Scalar & borderValue Scalar() ) 将通用几何变换…