Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

获取训练样本的思路 #3

Closed
PoBlue opened this issue Oct 14, 2017 · 5 comments
Closed

获取训练样本的思路 #3

PoBlue opened this issue Oct 14, 2017 · 5 comments

Comments

@PoBlue
Copy link
Owner

PoBlue commented Oct 14, 2017

https://review.udacity.com/#!/reviews/271587

如上:每个 review 后面的 id ,我们都可以更改从而获得其它的 review,而且无需权限就可以阅读。只要穷举后面的 id 就能获取大量的 review 了

  1. 获取 Review 的数据,需要对 Review 的标记进行爬取。记得 Chrome工具检测好像有 JSON 的,这个挺好办的。如果实在不行,就只能自己写个网页解析器了。。。
  2. 对数据进行分类,按照项目,项目语言,有没有评分进行分类。按照语句来索引评论。找出最常标记语句的模式。

利用样本:

  1. 写神经网络或者机器学习算法。进行评论生成。输入:语句模式,生成:预测的评论。(待定吧,感觉不会生成得太准确)
  2. 或者数据分析。看特定项目中,哪些语句是最常标识的,再自己写正则表达式和评论
  3. 还有 assign 时间和 complete 时间,这个可以用来分析项目评分的难易程度,还可以用来找出哪些 Reviewer 完成得比较快。再对他的 Review 进行分析。相信能找出大量的模板。
@PoBlue
Copy link
Owner Author

PoBlue commented Oct 16, 2017

Review 评论数据分析

获取原始的数据

2017-10-16 4 10 14

2017-10-16 4 10 26

通过使用 Chrome 监听返回的文件,揪出了评论的 json 文件

https://review-api.udacity.com/api/v1/submissions/271387/contents.json

只要改改 id 就可以直接获取,但是发现评论的具体内容被加密了。

解密的思路:因为解密不可能是发生在服务器身上的,那么就很大概率在本地的 js 文件上了。看来要对 js 文件打断点,找出数据显示前执行的方法。然后揪出解密代码

揪出来了,原来不是加密,直接利用数据里的 id 就能获取评论了。果然方便~

只要将下面链接的 id 和上面链接返回的 json id 相对应就行了

https://review-api.udacity.com/api/v1/contents/7911600/comments.json

2017-10-16 4 28 47

获取对应位置的语句

这个就只能下载项目文件,再找文件里对应位置的语句。用 python 处理文件,这一步很容易完成。只是这样爬取样本花的时间估计会比预计的长

@PoBlue
Copy link
Owner Author

PoBlue commented Oct 16, 2017

其它的一些数据链接

下面的链接可以取出的数据:review 和用户的信息,完成时间和 assign 时间,还有项目语言,项目文件

https://review-api.udacity.com/api/v1/submissions/271687.json

@PoBlue
Copy link
Owner Author

PoBlue commented Oct 16, 2017

服务器负载的考虑

同一 ip 同一账号单位时间内对服务器请求数次过多,必然会被禁掉。单独开个账号,时间控制在 5 分钟左右请求一份 Review。这样大概一天 300 份

一天的 Review 数量 = 24 * 12 = 288 份

@PoBlue
Copy link
Owner Author

PoBlue commented Oct 17, 2017

解密 base64

https://review-api.udacity.com/api/v1/submissions/795832/contents.json

因为好奇,认为 review 里面不可能没有代码内容的。为了找出内容,先对内容有很大概率存储地方检查一遍,先检查 content.json 里面的。就凭它的名字叫 contents 。。。

发现里面有个键值并不了解的,就是 blob。打开会看到一群乱码

然后稍微了解了上面链接的 blob 键值。查了一番文件的编码方式。试了常用的 encode 方式对乱码进行 decode。发现原来文件内容是通过 base64 的方式进行编码, 解密如下:

2017-10-18 3 49 09

有了这个,就不用 python 对项目文件解释了。直接对 Blod 用 base64 解密就行了

参考链接

  1. Binary-to-text encoding
  2. Content-Transfer-Encoding
  3. Base64
  4. Blob

@PoBlue
Copy link
Owner Author

PoBlue commented Nov 11, 2017

最近改版,普通账户无法看非自己的 Review 了,错失良机了,以后有机会有想法再研究 😢

@PoBlue PoBlue closed this as completed Nov 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant