突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字,就想到能够自己拼装链接,循环不断的去抽取页面。于是自己分析了下页面结构,就開始了

       从一開始写的时候,发现一秒钟就抽取了一个页面,想到之前用的webmagic爬虫里抓取页面就用了java的多线程技术,于是百度。。。直接上代码。(抓取过程中发现好多无效资源,垃圾资源,广告资源特别多,所以慢慢的累积了非常多垃圾keyword,在抓取过程中过滤)

package getBaiduYunURL;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; class mythread implements Runnable{    
    long count;
    public void run() {
        try{    
             for(;this.count<1813454114;this.count++){
                 PrintWriter printWriter = new PrintWriter(new FileWriter(new File("D:/自学/BaiduYunData/Data/url.txt"), true));
                 PrintWriter cachePrintWriter = new PrintWriter(new FileWriter(new File("D:/自学/BaiduYunData/Cache/index.txt"), false));
                 cachePrintWriter.println(this.count);
                 cachePrintWriter.close();
                 String url="http://pan.baidu.com/wap/share/home?uk="+this.count;
                 Document doc = Jsoup.connect(url).timeout(60000).get();
                 String title = doc.title();
                 System.out.println(title+this.count);
                 Element content = doc.body();
                 Elements emptytag=content.select(".empty-other");  //看是否有分享 为空则是有分享            
                 if(emptytag.isEmpty()){
                     System.out.println("有分享");
                     Elements dataems=content.select("[data-ac=active]");
                     for(Element dataem:dataems){
                         Elements lists=dataem.select(".list-item");
                         String sourcename=dataem.attr("data-fn");
                         if(sourcename!=""){
                             if(!sourcename.matches("^\\w+.[^sS]+$|^\\w+[-]\\w+.[^sS]+$|^\\w+[.?!;]\\w+.[^Ss]+$|\\w+|^.*[!??!].*$")){
                                 System.out.println("不是数字");
                                 if(sourcename.indexOf("医院")==-1&&sourcename.indexOf("淘宝")==-1
                                         &&sourcename.indexOf("彩票")==-1&&sourcename.indexOf("福彩")==-1&&sourcename.indexOf("牌")==-1
                                         &&sourcename.indexOf("双色球")==-1&&sourcename.indexOf("创业")==-1&&sourcename.indexOf("咨询")==-1
                                         &&sourcename.indexOf("赚")==-1&&sourcename.indexOf("网店")==-1
                                         &&sourcename.indexOf("营销")==-1&&sourcename.indexOf("娱乐")==-1
                                         &&sourcename.indexOf("cf刷枪")==-1&&sourcename.indexOf("哪里")==-1
                                         &&sourcename.indexOf("麻将")==-1&&sourcename.indexOf("作弊")==-1
                                         &&sourcename.indexOf("早泄")==-1&&sourcename.indexOf("人流")==-1
                                         &&sourcename.indexOf("包皮")==-1&&sourcename.indexOf("痔")==-1
                                         &&sourcename.indexOf("肾")==-1&&sourcename.indexOf("治疗")==-1&&sourcename.indexOf("病")==-1
                                         &&sourcename.indexOf("哪家")==-1&&sourcename.indexOf("哪个")==-1
                                         &&sourcename.indexOf("妇科")==-1&&sourcename.indexOf("男科")==-1
                                         &&sourcename.indexOf("复件")==-1&&sourcename.indexOf("痘")==-1
                                         &&sourcename.indexOf("免费")==-1&&sourcename.indexOf("qq")==-1
                                         &&sourcename.indexOf("QQ")==-1&&sourcename.indexOf("减肥")==-1
                                         &&sourcename.indexOf("高考志愿")==-1&&sourcename.indexOf("瘦身")==-1
                                         &&sourcename.indexOf("新建")==-1&&sourcename.indexOf("挂")==-1
                                         &&sourcename.indexOf("解压")==-1&&sourcename.indexOf("肝")==-1&&sourcename.indexOf("炎")==-1
                                         &&sourcename.indexOf("补丁")==-1&&sourcename.indexOf("疤痕")==-1&&sourcename.indexOf(".exe")==-1
                                         &&sourcename.indexOf("刷")==-1&&sourcename.indexOf(".com")==-1&&sourcename.indexOf("美女")==-1){
                                     System.out.println(sourcename);
                                     printWriter.println(sourcename);
                                     for(Element listem:lists){
                                         String linkHref = url+listem.attr("href");
                                         printWriter.println(linkHref);
                                         System.out.println(linkHref);
                                     }
                                 }else{
                                     System.out.println(sourcename);    
                                 }
                             }else{
                                 System.out.println("是数字");
                             }
                         }
                     }
                 }
                 printWriter.close();
                 cachePrintWriter.close();
             }            
         }catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
public class MultiThread {
    public static void main(String args[]) {         mythread my = new mythread();
        try{
            FileReader text = new FileReader("D:/自学/BaiduYunData/Cache/index.txt");
            BufferedReader buff = new BufferedReader(text);
            String index=buff.readLine();
            my.count=Long.parseLong(index);
        }catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for(int i=0;i<100;i++){
            new Thread(my).start();
        }
    }
}

代码如上,非常easy,我是把抓取的链接放在txt中,下一步就是把这些资源做成能够在线搜索,和非常多网盘搜索一样,可是我这个比較低级。

利用jsoup爬取百度网盘资源分享连接(多线程)的更多相关文章

  1. 爬取百度网盘资源报user is not authorized, hitcode:119

    爬取百度网盘资源报user is not authorized, hitcode:119 一.总结 一句话总结: 可能是百度网盘禁止非客户端环境下载大文件,所以将请求头改为客户端:'User-Agen ...

  2. [PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索

    标题起的太大了,都是骗人的.最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台.用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址.就是这么一个简单的功能,类似很多的网盘搜索类网 ...

  3. 利用Python爬虫实现百度网盘自动化添加资源

    事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...

  4. 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源

    前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...

  5. Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统

    Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...

  6. 利用xpath爬取招聘网的招聘信息

    爬取招聘网的招聘信息: import json import random import time import pymongo import re import pandas as pd impor ...

  7. python 利用selenium爬取百度文库的word文章

    今天学习如何使用selenium库来爬取百度文库里面的收费的word文档 from selenium import webdriver from selenium.webdriver.common.k ...

  8. 200G网盘资源分享

    今日偶得大量网盘资源,遂写一博文以分享! 来源:HACK学习呀,微信公众号:HACK学习呀 文件名 链接 提取密码 2015cracer入侵入门到精通视频教程 点我查看 trf3 一笔√带过入侵教程 ...

  9. 网盘资源分享:你不知道的JavaScript(上)

    链接:https://pan.baidu.com/s/1UEBetOr2Z94oEeu5VsQYXQ 提取码:etts 复制这段内容后打开百度网盘手机App,操作更方便哦

随机推荐

  1. 《生活在Linux中》之:使用Bash就是使用Emacs

    定义bash Emacs模式下的快捷键请参考: Readline-在BASH下自定义键盘热键 未完待续...

  2. Python IDLE 快捷键

    Python IDLE  快捷键 编辑状态时: Ctrl + [ .Ctrl + ] 缩进代码 Alt+3 Alt+4 注释.取消注释代码行 Alt+5 Alt+6 切换缩进方式 空格<=> ...

  3. tc3162目录

    lsbin      dev      lib      proc     tmp      usrboaroot  etc      linuxrc  sbin     userfs   var# ...

  4. Swift - 带结果列表的搜索条(UISearchDisplayController)的用法

    (注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISea ...

  5. ACE的构建(VC++6.0环境)

    ACE的构建(VC++6.0环境)Windows下ACE的构建1. 将ACE-5.5.zip解压到所需的安装目录,此处以E:/为例,解压后形成ACE_wrappers文件夹,因此ACE将会存在于ACE ...

  6. 降低http请求次数

    80%的终于用户响应时间花在前端程序上.而其大部分时间则花在各种页面元素,如图像.样式表.脚本和Flash等的下载上. 降低页面元素将会降低HTTP请求次数.这是高速显示页面的关键所在. 1.Imag ...

  7. opencv MAT数据操作

    1.存取单个像素值 最通常的方法就是 img.at<uchar>(i,j) = 255; img.at<Vec3b>(i,j)[0] = 255; 2.用指针扫描一幅图像 对于 ...

  8. 玩转Windows服务系列——服务运行、停止流程浅析

    原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...

  9. 算法起步之Bellman-Ford算法

    原文:算法起步之Bellman-Ford算法 从这篇开始我们开始介绍单源最短路径算法,他是图算法之一,我们前面说的贪心,图的遍历,动态规划都是他的基础,单源最短路径其实说的就是图中节点到节点的最短路径 ...

  10. Codeforce 57C Array

    C. Array time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...