Retour au classement

brianway/webporter

Java

基于 webmagic 的 Java 爬虫应用

elasticsearchkibanazhihu
Croissance des étoiles
Étoiles
2.8k
Forks
848
Croissance hebdomadaire
Issues
7
2.8k
18 juil.19 juil.19 juil.20 juil.
ArtefactsMavengit clone https://github.com/brianway/webporter.git
README

webporter

webporter 是一个基于垂直爬虫框架 webmagic 的 Java 爬虫应用,旨在提供一套完整的数据爬取,持久化存储和可视化展示的实践样例。

webporter 寓意“我们不生产数据,我们只是互联网的搬运工~”

如果觉得不错,请先在这个仓库上点个 star 吧,这也是对我的肯定和鼓励,谢谢了。

目前只提供了知乎用户数据的爬虫示例。不定时进行调整和补充,需要关注更新的请 watch、star、fork


webporter 的主要特色:

  • 基于国产 Java 爬虫框架 webmagic,是众多 Python 爬虫中的一股清流
  • 完全模块化的设计,强大的可扩展性
  • 核心简单,但是涵盖爬虫应用的完整流程,是爬虫应用的实践样例
  • 使用 JSON 配置,无需改动源码
  • 支持多线程
  • 支持向 Elasticsearch 批量导入

注意:webporter 不是爬虫框架,而是如何使用爬虫框架进行实战的样例,偏休闲性质,不建议使用在生产环境。 生产环境建议使用 webmagic 或者 scrapy

webporter 核心模块的架构和设计主要参考了 webmagic https://github.com/code4craft/webmagic

webporter 的 github 地址:https://github.com/brianway/webporter

效果展示

详细的数据分析文章请看我的博客 《爬取知乎60万用户信息之后的简单分析》

  • 下载数据:去重导入 Elasticsearch 后大概有 60+ 万用户数据(目前没有遇到反爬限制)

索引状态图

  • 示例分析:通过聚合得到知乎用户 top 10 行业分布情况(1:男,0:女,-1:未知)

top 10 行业分布

仓库目录

环境要求

  • JDK 1.8+
  • Maven 3.3+
  • Elasticsearch 5.0.1
  • Kibana 5.0.1

新手可参考我的博客 《Elasticsearch 5.0-安装使用》快速上手 Elasticsearch+Kibana

快速开始

以爬取知乎用户数据为例

1.定制配置文件

配置文件位于 webporter-collector-zhihu/src/main/resources/config.json, 示例:

{
  "site": {
    "domain": "www.zhihu.com",
    "headers": {
      "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
      "authorization": "Your own authorization here."
    },
    "retryTimes": 3,
    "sleepTime": 500
  },
  "base_dir": "/Users/brian/todo/data/zhihu/"
}

仅需要修改两处:authorizationbase_dir 即可

  • authorization: 需要知乎账户在已登录状态下自行在浏览器抓包提取该 HTTP 响应头。若有疑问请参考 issue 3
  • base_dir: 为保存数据文件的根目录,需具有写权限

配完就可以直接使用了。更多关于 site 的属性配置请参考 WebMagic in Action - Site Config

2.启动爬虫

依次运行 webporter-collector-zhihu 模块的下面两个类的 main 方法即可。(注意:由于这两个阶段是串行的,不要同时启动这两个类)

3.可视化

安装好 ElasticsearchKibana 后,在 Kibana 中使用 Visualize 对数据可视化即可

赞助

如果您觉得该项目对您有帮助,请扫描下方二维码对我进行鼓励,以便我更好的维护和更新,谢谢支持!

支付宝 微信

TODO

  • 数据爬取,获取知乎用户数据
  • 数据持久化,将数据导入到 Elasticsearch 中
  • 可视化展示,通过前端框架对数据进行简单的分析和展示
  • 使用 Java 8 新特性完善代码
  • Dockerize 这个仓库,方便用户直接使用

联系作者

Email: weichuyang@163.com

Lisence

Lisenced under Apache 2.0 lisence

Dépôts similaires
macrozheng/mall

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于Spring Boot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

JavaMavenApache License 2.0spring-bootspring-security
macrozheng.com/admin/
84.3k29.8k
doocs/advanced-java

😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

JavaMavenCreative Commons Attribution Share Alike 4.0 Internationaljavadistributed-systems
java.doocs.org
79k19.2k
elastic/elasticsearch

Free and Open Source, Distributed, RESTful Search Engine

JavaMavenOtherelasticsearchjava
elastic.co/products/elasticsearch
77.6k26.1k
grafana/grafana

The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

TypeScriptnpmGNU Affero General Public License v3.0grafanamonitoring
grafana.com
75.7k14.3k
typesense/typesense

Open Source alternative to Algolia + Pinecone and an Easier-to-Use alternative to ElasticSearch ⚡ 🔍 ✨ Fast, typo tolerant, in-memory fuzzy Search Engine for building delightful search experiences

C++GNU General Public License v3.0search-enginesearch
typesense.org
26.3k953
elastic/kibana

Your window into all of your data

TypeScriptnpmOtherkibanaelasticsearch
elastic.co/products/kibana
21.2k8.6k
openobserve/openobserve

Open source observability platform for logs, metrics, traces, frontend monitoring, pipelines and LLM observability. A sophisticated, simple and highly performant alternative to Datadog, Splunk, and Elasticsearch with 140x lower storage costs and single binary deployment.

TypeScriptnpmGNU Affero General Public License v3.0logsmetrics
openobserve.ai
20.3k953
YunaiV/yudao-cloud

ruoyi-vue-pro 全新 Cloud 版本,优化重构所有功能。基于 Spring Cloud Alibaba + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城、CRM、ERP、MES、IM、AI 大模型、IoT 物联网等功能。你的 ⭐️ Star ⭐️,是作者生发的动力!

JavaMavenMIT Licensedubbospringcloud
cloud.iocoder.cn
19.3k4.8k
Tencent/APIJSON

🏆 Real-Time no-code, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and Frontend(Client) can customize response JSONs 🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构

JavaMavenOtherpostgresql-databasetidb
apijson.cn
18.4k2.3k
deviantony/docker-elk

The Elastic stack (ELK) powered by Docker and Compose.

ShellMIT Licensedockerelasticsearch
18.4k6.9k
zincsearch/zincsearch

ZincSearch . A lightweight alternative to elasticsearch that requires minimal resources, written in Go.

GoGo ModulesOthergogolang
zincsearch-docs.zinc.dev
17.9k777
infinilabs/analysis-ik

🚌 The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary.

JavaMavenApache License 2.0elasticsearchik-analysis
17.5k3.3k