zoukankan      html  css  js  c++  java
  • 网络爬虫

      前几天无聊,忽然想写点有趣的代码,关于网络方面的,刚开始就想写一个能从oj上自动拉个比赛的软件,后来查资料时看到了神奇的AC自动机,于是自己也去实现了遍。

      

      一天狂A 500多道。。。就当自娱自乐了。在这里提醒大家,AC需谨慎,我跑程序的时候已经将程序放慢了许多,也实时监控hdu(oj大部分题是从hdu拉的)是否卡住,但即使这样,还是伤到了学长的oj。。。

      自动AC原理比较简单,大概就是几个步骤:

      1. 从oj 获取某题的关键字(用于搜索,找出题解,关键字可以自己决定采用什么)

      2. 百度搜索关键字

      3. 找到博客链接

      4. 找到博客中代码部分

      5. 登录oj

      6. 将得到的代码提交到该题

      实现也不难,就是不断使用get、post 罢了,就是要细心。我是用C#写的,get、post需要自己封装一下,也很简单。

      看上面步骤:

      第一个需要看你要在哪个oj爬,每一个oj的实现不同。

      第二个步骤,百度搜索hdu1024其实就是跳到网页:https://www.baidu.com/s?wd=hdu1024。

      第三个步骤,看选取什么博客,我选择C博客,博客园的代码段太乱(网页元素和代码放在一起了...)。

      第四个步骤,通过找“code”一般就能找到代码了,注意一下细节就可以了。

      第五个步骤,登录也要看具体oj,post的参数中放上用户名、密码,大概就可以了。

      第六个步骤,提交也用post,看一下提交页面的源代码,分析一下需要传几个参数,小心一些即可。

      需要注意的是post时,参数字符串需要进行编码,比方说你地址栏输入https://www.baidu.com/s?wd=hdu 1089,浏览器会自动转化成https://www.baidu.com/s?wd=hdu%201089,也就是说中间是不允许出现空格的,空格用%20代替,你用post的时候就没有人帮你转化了,需要自己写一个编码函数。

      大家闲着的时候可以试试,但千万不要太过分,有可能会被封号的哦

  • 相关阅读:
    深入理解hadoop之MapReduce
    centos关机与重启命令
    hadoop学习笔记(1)
    配置ssh免密码登录设置后还是提示需要输入密码
    js获得URL中的参数
    SQLite介绍
    sql记录
    sql游标使用
    sql触发器
    sql函数
  • 原文地址:https://www.cnblogs.com/hchlqlz-oj-mrj/p/6084415.html
Copyright © 2011-2022 走看看