突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是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. JavaScript(一基本语法)

    本篇博客是对js的一个基本的了解,对于没有js基础的同学来说应该是个入门的基本吧 javascript 是原型化继承来的面向对象的动态类型的区分大小写的客户端的脚本语言.主要目的是为了解决服务器语言, ...

  2. eclipse如何查看类之间的引用关系

    今天遇到这个问题:mark一点点: 在类名上单击右键.选择Reference->Workingspace快捷克债券Ctrl+Shift+G 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  3. “HTTP 错误 401.1 - 未授权:登录失败” iis配置和权限问题

    今天,将项目发布到IIS服务器上,出现此问题,本地IIS访问正常. 登录失败说明根本登录不了,谈何访问网页,所以要从两方面下手,一.账户:二.账户权限: 一.设置你网站属性的时候,目录安全性-匿名访问 ...

  4. HDU 4921 Map

    题意: 给n个节点  他们形成了最多10条链  每条最多1000的长度  每一个节点有个val  你能够选择任何位置截断链  断点前的全部节点被你获得  通过题中计算公式得出你的val  问  通过随 ...

  5. 使用Boost库中的组件进行C++内存管理

    C++标准库中的auto_ptr,智能指针,部分的解决了获取资源自动释放的问题 在Boost中,提供了6中智能指针:scoped_ptr, scoped_array, shared_ptr, shar ...

  6. hdu 1530 Maximum Clique

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1530 题目分类:最大团问题 DP + DFS 代码: #include<bits/stdc++. ...

  7. [Cocos2d-x]Android的android.mk文件通用版本

    原文地址: http://blog.ready4go.com/blog/2013/10/12/update-android-dot-mk-with-local-src-files-and-local- ...

  8. ubuntu 64位下安装wps

    首先,去官网下载wps.地址:http://community.wps.cn/download/ 然后切换到下载文件夹.运行例如以下命令: $ sudo apt-get install ia32-li ...

  9. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  10. Twenty Newsgroups Classification任务之二seq2sparse(5)

    接上篇blog,继续分析.接下来要调用代码如下: // Should document frequency features be processed if (shouldPrune || proce ...