突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是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. jquery ajax验证用户名是否存在(后台spring mvc)

    controller层 @ResponseBody @RequestMapping(value = "/user/isExist", produces = "applic ...

  2. Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind

    Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind    at ...

  3. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  4. Android平均分布的布局图像的下一行

    Android下一行平均分布图片的布局 这是一个非经常见的需求,比方有三个图片button,须要在底部三个平均,比方下个样例: 下面是布局文件 <LinearLayout android:lay ...

  5. 阅读代码分析工具Understand 2.0试用

    Understand 2.0是一款源码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实能够大大提高代码阅读效率. 因为Understand功能十分强大,本文不可能详尽地介绍它的全部功能,所 ...

  6. javascript (四) 改变html样式

    <h1 id="domo"> this is testing test</h1> <script> function changecolor() ...

  7. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布

    首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版 下载地址:http://qt.nokia.com/downloads ...

  8. 让你提前知道软件开发(22):shell脚本文件操作

    文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...

  9. 解决SQL查询总是超时已过期

    解决SQL查询总是超时已过期 .在WIN8里提示:OLE DB 或 ODBC 错误 : 查询超时已过期; HYT00 1.由于数据库设计问题造成SQL数据库新增数据时超时 症状:   Microso ...

  10. poj3694(tarjan缩点+lca)

    传送门:Network 题意:给你一个连通图,然后再给你n个询问,每个询问给一个点u,v表示加上u,v之后又多少个桥. 分析:方法(1219ms):用并查集缩点,把不是桥的点缩成一个点,然后全图都是桥 ...