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

    Affinity Group: (近亲组?个人认为直译为近亲组更好一些,不知道官方是怎么翻译的). 如何创建Affinity Group 1. 进入https://manage.windowsazur ...

  3. windows下RabbitMQ 监控

    RabbitMQ的监控很简单,网上也有很多资料,但是大都不详细,让人云里雾里,我这里详细总结下. RabbitMQ本身提供了一个web的监控页面,只需要简单的几部命令行就可以访问这个页面了. 1.打开 ...

  4. js传真实地址 C:\fakepath

    js给action传真是地址的时候,处于安全,传到action中 浏览器会改变路径变为C:\fakepath\ftp.txt,但是原始路径却是 C:\Documents and Settings\Ad ...

  5. centos7里默认python升级到2.7.11

    CentOS镜像使用帮助 http://mirrors.163.com/.help/centos.html   安装gcc yum install gcc* openssl openssl-devel ...

  6. Face-landmarks-detection-benchmark 人脸特征定位网站汇总

    源地址:https://www.douban.com/note/525032729/   https://github.com/delphifirst/FaceXhttps://github.com/ ...

  7. 请慎用java的File#renameTo(File)方法(转)

    以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名.移动文件的目的.不过后来经常发现问题:File#renameTo(File)方法会返回 ...

  8. UVAlive 2519 Radar Installation (区间选点问题)

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  9. nginx 源码安装

    安装环境: 操作系统:Ubuntu 12.04 Nginx:     V1.4.2 PCRE:    V8.33 zlib:         V1.2.8 下载上述源包到当前用户主目录(本机:/hom ...

  10. 在后台运行erlang;在需要时连回交互模式

    * 1. 启动后台运行的erlang环境 按以下命令: erl -detached -name a@127.0.0.1 注意,-name的值必须是xxxx@ip的形式.其中xxxx是英文名,ip必须是 ...