# PicCrawler
[![@Tony沈哲 on weibo](https://img.shields.io/badge/weibo-%40Tony%E6%B2%88%E5%93%B2-blue.svg)](http://www.weibo.com/fengzhizi715)
[ ![Download](https://api.bintray.com/packages/fengzhizi715/maven/crawler/images/download.svg) ](https://bintray.com/fengzhizi715/maven/crawler/_latestVersion)
[![License](https://img.shields.io/badge/license-Apache%202-lightgrey.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
用于抓取图片的爬虫,支持一些简单的定制比如User-Agent、referer、header、cookies等
最初是为了批量抓取图片验证码,然后导入tensorflow进行训练,才有了这个库。
它的结构如下图所示
![](PicCrawlerClient.png)
# 下载安装:
对于Java项目如果使用gradle构建,由于默认不是使用jcenter,需要在相应module的build.gradle中配置
```groovy
repositories {
mavenCentral()
jcenter()
}
```
Gradle:
```groovy
implementation 'com.cv4j.piccrawler:crawler:1.0.0'
```
Maven:
当项目使用Maven进行构建时,在pom.xml文件中添加以下库
```xml
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
```
然后添加如下的依赖
```xml
<dependency>
<groupId>com.cv4j.piccrawler</groupId>
<artifactId>crawler</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
```
# 使用方法:
## 1.1 下载单张图片
1. 普通方式
```java
String url = "..."; // 图片的地址
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.repeat(200) // 重复200次
.build()
.downloadPic(url);
```
2. 使用RxJava
```java
String url = "..."; // 图片的地址
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.repeat(200)
.build()
.downloadPicUseRx(url);
```
3. 使用RxJava,下载之后的图片还能做后续的处理
```java
String url = "..."; // 图片的地址
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.repeat(20)
.build()
.downloadPicToFlowable(url)
.subscribe(new Consumer<File>() {
@Override
public void accept(File file) throws Exception {
// do something
}
});
```
## 1.2 下载多张图片
```java
List<String> urls = ...; // 多张图片地址的集合
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.build()
.downloadPics(urls);
```
## 1.3 下载某个网页的全部图片
```java
String url = "..."; // 针对某一个网址
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.build()
.downloadWebPageImages(url);
```
## 1.4 下载多个网页的全部图片
```java
List<String> urls = ...; // 多个网页的集合
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.build()
.downloadWebPageImages(urls);
```
## 1.5 通过代理使用图片爬虫
如果有多个代理的话,内部使用轮询的方式切换代理。
```java
String url = ...; // 针对某一个网址
PicCrawlerClient.get()
.timeOut(6000)
.fileStrategy(new FileStrategy() {
@Override
public String filePath() {
return "temp";
}
@Override
public String picFormat() {
return "png";
}
@Override
public FileGenType genType() {
return FileGenType.AUTO_INCREMENT;
}
})
.addProxy(new Proxy("xxx.xx.xx.xx",xxxx))
.addProxy(new Proxy("xxx.xx.xx.xx",xxxx))
.build()
.downloadWebPageImages(url);
```
CrawlerClient也支持使用addProxyPool()传递一个代理列表。
爬虫在工作中,如果发现代理不可用内部会有策略会代理池中丢弃该不可用的代理。
## 1.6 针对防盗链的图片
如果图片有防盗链接,可以使用referer()方法,传入网站的网址。就可以愉快的下载图片了。
对于懒人还有一个方法autoReferer(),可以不必传入网站的网址。
## 1.7 增加对Kotlin的支持,可以使用DSL的方式来使用图片爬虫
1. 下载单张图片
```kotlin
fun main(args: Array<String>) {
downloadPic {
url = "..."
timeOut = 6000
repeat = 20
}
}
```
2. 下载某个网页的全部图片
```kotlin
fun main(args: Array<String>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
使用RxJava2 和 Java 8的特性开发的图片爬虫.zip (33个子文件)
WGT-code
gradle
wrapper
gradle-wrapper.jar 54KB
gradle-wrapper.properties 230B
LICENSE 11KB
crawler-selenium
src
main
java
com
cv4j
piccrawler
selenium
Utils.java 2KB
SeleniumCrawlerClient.java 3KB
build.gradle 354B
chromedriver 11.37MB
CHANGELOG.md 786B
PicCrawlerClient.png 163KB
build.gradle 419B
crawler-kotlin
src
main
java
com
cv4j
piccrawler
CrawlerWrapper.kt 2KB
build.gradle 680B
.gitignore 41B
settings.gradle 103B
crawler
src
main
resources
logback.xml 1KB
java
com
cv4j
piccrawler
PicCrawlerClient.java 11KB
utils
Utils.java 6KB
http
RetryHandler.java 2KB
HttpParam.java 3KB
HttpManager.java 11KB
parser
PageParser.java 259B
UrlParser.java 908B
PicParser.java 2KB
download
DownloadManager.java 4KB
strategy
FileStrategy.java 454B
NormalStrategy.java 340B
FileGenType.java 412B
AutoIncrementStrategy.java 397B
domain
Proxy.java 1KB
build.gradle 1KB
.gitignore 41B
.gitignore 85B
README.md 9KB
共 33 条
- 1
资源评论
JJJ69
- 粉丝: 6351
- 资源: 5918
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功