把BG论坛的数据爬了吧,BG账本妹子急需爬虫工具

正经事,号外!号外!

随着大量用户进入论坛,发帖子或者发文章,这就导致大量的统计需求,以分发奖励,现在都是人工“智能”统计,每周都要统计,但是会耗费大量时间,而且还会出错,希望BG朋友们可以帮忙开发爬虫统计系统,以协助我们妹子的审核工作!

需求如下,另外我还画了个简单的流程图,请看下什么时间可以完成,还需要我们丰富哪些需求,一周之内可以吗?何时开会讨论下(俺们仨随叫随到)?

类型】python或者其他脚本程序即可,我们可以在自己电脑上或者公司服务器运行下得出统计的excel即可。

输入】. 开始时间 & 结束时间。例如: 统计从 2018.11.05:17:05分 To 2018.11.12:17:05分(一周之内的文章/问题/回答数量)

输出】.输出到exel表格,表格包括: 每个作者的名字/HPB Address /回复的帖子数量/每个帖子的连接/时间/帖子类别/板块!

帖子类别包括:问题/回复/文章/

回报:BG小分队为您提供各种“特殊”服务,尽管提,没条件也要创造条件!

Untitled%20Diagram

热泪盈眶,各位大佬走过路过洒点爱心,BG的未来靠大家!

抽空写了个demo,功能基本实现。(此处非要20字……)

哈哈哈哈哈,谢谢纳兰少!!!感恩哭泣脸/

@yjjnls,

老板,我使用了,反馈下我的过程

安装了相应的nodejs版本和插件“npm install node-xlsx” and “npm install puppeteer”

爆出来了下面这个问题,你看下呗:yum:

npm start

[email protected] start /Users/saturn/workspace/bg_parser
node parser.js

===>parsing yjjnls
(node:73046) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
at Promise.then (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/FrameManager.js:1230:21)
– ASYNC –
at Frame. (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/helper.js:144:27)
at Page.goto (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/Page.js:587:49)
at Page. (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/helper.js:145:23)
at parse (/Users/saturn/workspace/bg_parser/parser.js:112:16)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:73046) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:73046) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
^C
➜ bg_parser git:(master) ✗ nvm list
-> v10.13.0
default -> lts/* (-> v10.13.0)
node -> stable (-> v10.13.0) (default)
stable -> 10.13 (-> v10.13.0) (default)
iojs -> N/A (default)
lts/* -> lts/dubnium (-> v10.13.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.14.4 (-> N/A)
lts/carbon -> v8.13.0 (-> N/A)
lts/dubnium -> v10.13.0
➜ bg_parser git:(master) ✗ ls
LICENSE member.txt package-lock.json parser.js
README.md node_modules package.json result

另外一个问题,js程序能否自动search member list,不用手工填进去,因为每个星期或者每次查的时候论坛的注册人数都会变化,所以希望变成自动的,不用每次手动填写!

  1. 那个问题可能是网络差导致页面加载不出来引起的,可以用把parse.js里面的这两句改一改:
    const browser = await puppeteer.launch();
    // const browser = await puppeteer.launch({ headless: false, slowMo: 250 });

改成这样:

    // const browser = await puppeteer.launch();
    const browser = await puppeteer.launch({ headless: false, slowMo: 250 });

这样爬的过程你也能看见,如果网页一直刷不出来那就是网络问题,这里默认有30s的等待,如果网页能加载出来你再告诉我。
可以先测试爬一个人的数据,看看是否有问题,然后再添加member。

  1. 这个member list我以为你们后台有的……,没有的话我再看看怎么加上去

@yjjnls

老哥,我发现个问题,js脚本调用chromium 登陆 http://blockgeek.org/u/yjjnls/activity/topics
一直在刷新,慢的很,我用chrom 直接输入这个地址就比较快!

还是显示timeout!

==>parsing yjjnls
(node:74963) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
at Promise.then (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/FrameManager.js:1230:21)
– ASYNC –
at Frame. (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/helper.js:144:27)
at Page.goto (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/Page.js:587:49)
at Page. (/Users/saturn/workspace/bg_parser/node_modules/puppeteer/lib/helper.js:145:23)
at parse (/Users/saturn/workspace/bg_parser/parser.js:112:16)
(node:74963) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:74963) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

问个问题,是否可以配置一个config文件,用这个账号密码登陆到论坛内部,然后挨个扫里面所有的账户,最后导出他们的信息,这个会快吗?

另外现在需要把每个账户的HPB地址也导出到excel里,这样利于统计。所以暂时为了方便你们爬虫测试,登陆进去都可以看到每个人的hpb地址。

自己家的网站也要用爬虫吗?后台数据库是干嘛的?一般都是访问不了数据库的人才会走爬虫这条路吧?

完善数据库是正途啊 <凑20…>

:stuck_out_tongue_closed_eyes:

@Sager

你说的绝壁正确,完善数据库是正途,系统早期部署使用的是discours 开发框架,当时没没有开发支持,现在正在谋划改版,使其满足社区的需求,短期因为活动密集,没有合适人手,所以邀请大家一起来维护,爬虫也是因为这个原因!

改版定下来之后,会邀请合适的开发团队develop!

加油,blockgeer肯定会越来越好用

@光兄,纳兰少,天佑 3位老铁:
账本妹子要发红包了,哈哈

现在爬虫工具基本可用了,每个人代码我们都尝试过,后来根据使用频率,易用程度,三位耗费的时间/精力,每个人的颜值,还有 妹子对你们的感脚(主要是有无跟账本妹子主动聊天,嘘寒问暖,有无主动询问账本妹子的使用困惑,是否有效解决了妹子的需求等等一系列因素。。。)

从HPB赞助的公共激励池里拿出一部分HPB token 感谢大家对BG的帮助:

名单和数额如下:

天佑: 300 HPB
纳兰少&光兄 :每人 200 HPB token
请3位联系账本妹子提供HPB钱包地址!

如果大家闲数额太多,或者对分配表示疑问,那太好了,为避免不必要的纷争,打到我账户上保存就行了,免得各位烦心,麻烦事我来承担就好了!