Skip to content

HoffmanZheng/Multi-Threaded-Crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-Threaded-Crawler

多线程网络爬虫与Elasticsearch新闻搜索引擎

使用 Java 编写爬虫,实现对新浪新闻站的 HTTP 请求、模拟登录、Cookie 保存、HTML 解析的功能。筛选链接循环 爬取新闻站内内容,连接 MySQL 数据库实现断点续传功能,使用 Elasticsearch 分析数据,并完成一个简单的搜索引 擎。

  • 使用 Git 进行版本控制,小步提交 PR 至 Github 主分支,用 Maven 进行依赖包的管理,CircleCI 进行自动化测 试,在生命周期绑定 Checkstyle、SpotBugs 插件保证代码质量。
  • 使用 Flyway 自动迁移工具完成数据库初始化建表及添加原始数据工作,用 MyBatis 实现数据与 Java 对象的关系映射,对 MySQL 数据库进行索引优化,使百万级新闻内容的查找效率提升近 2 倍。
  • 采用多线程完成爬虫任务,提高爬取效率约 3 倍,使用 Elasticsearch 搜索引擎进行新闻内容的全文检索,实现了 百万级文本内容的快速搜索功能。

How to build

clone 项目至本地目录:

git clone https://github.com/NervousOrange/Multi-Threaded-Crawler.git

从 Docker 启动 MySQL 数据库:

docker run --name crawler -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

使用 IDEA 打开项目,刷新 Maven,再使用开源数据库迁移工具 Flyway 完成自动建表工作:

mvn flyway:migrate

项目测试:

mvn verify

运行项目:

  • Run Main 类,就开始爬取数据啦!

效果图:

爬虫效果图

爬虫逻辑图:

About

多线程网络爬虫与Elasticsearch新闻搜索引擎

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages