Giter VIP home page Giter VIP logo

webporter's Introduction

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: [email protected]

Lisence

Lisenced under Apache 2.0 lisence

webporter's People

Contributors

brianway avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webporter's Issues

请问能够实现爬取过程中暂停功能么?

能不能记录爬取的最后一个用户到某个文件中,下次再运行的时候读取保留的信息,继续爬取。

由于爬取过程比较漫长,能够实现本次终止爬取后,下次能够继续爬取就很方便了。

怎么启动项目啊

文档里说,依次运行 webporter-collector-zhihu 模块的下面两个类的 main 方法,我倒入eclips后,提示缺少很多依赖包,请问有便捷的方式启动吗

关于fastjason

请问您使用的fastjson版本是多少?在运行这个程序时遇到了"Exception in thread "main" com.alibaba.fastjson.JSONException: unclosed string : z"的问题

javascript支持,性能,反扒

我之前也做过一个爬虫的小项目,你说的该项目的特点挺好的,但是就我个人而言,不是非常在意。感觉最关心的内容如下:

  • javascript 支持。很多网页,包括当当,苏宁等,有部分数据都是通过 javascript 渲染得到的,这个框架是否提供支持,可能这个是使用者应该做的,但是这种场景下,框架有和优势。

  • 性能。对于一本的文本网页,其实性能都不是问题,主要和网速有关。但是在这种场景下:
    1. 租的vps, 当然越便宜越好,性能也越差。
    2. 起一个支持 javascript 的 core,耗内存非常严重(当然相对于租的 vps 而言)
    这样一来性能就很敏感了,比起线程,我更倾向于协程。

  • 反扒。这个真的是非常让人头疼的问题,之前做的最让人头疼的就是爬亚马逊。基本无解,但是对于豆瓣这种,应该还是可以解决的,这个框架是否有相应的应对措施?

这是我选择一个爬虫框架考虑的点,省时、省钱、省事。不过作者这个框架确实是很与众不同的,支持!

请求商务推广合作

作者您好,我们也是一家专业做IP代理的服务商,极速HTTP,想跟您谈谈是否能够达成商业推广上的合作。如果您,有意愿的话,可以联系我,微信:13982004324 谢谢(如果没有意愿的话,抱歉,打扰了)

知乎反爬

现在知乎已经加上反爬的功能了,如何破解,我每次爬一会就把账号给冻结了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.