突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是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. VC/MFC 工具栏上动态添加组合框等控件的方法

    引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发 ...

  2. jquery.form.js用法之清空form的方法

    本段代码摘取自jquery.form.js中,由于觉得该方法的使用性非常强,同时也可独立拿出来使用.该段代码言简意赅可以很好的作为学习参考. /** * Clears the form data. T ...

  3. JSP/Servlet-----charset 、pageEncoding差别

    一.JSP/Servlet中的几个编码的作用         在JSP/Servlet中有4个地方可设置编码(例如以下).当中前两个仅仅能用于JSP中,后两个可用于JSP和Servlet 中.    ...

  4. vs2008编译QT开源项目三国杀(五篇文章)

    请参看 http://tieba.baidu.com/f?kz=1508964881 按照上面的网址教程,下载三国杀源码,swig工具,并下载最新的QT4.8.2 for vs2008.我本机已经安装 ...

  5. Memcahce(MC)系列(一)Memcache介绍、使用、存储、算法、优化

    写在前面:前不久在工作中被问到关于MC一致哈希的问题,由于时隔太久差点儿忘记,特前来恶补一下MC,下面是前几年在工作中学习MC时的一些资料,来历不明,特整理一下,希望对大家的学习也能有帮助. 32 的 ...

  6. Mqtt协议IOS移植完1

    MQTTClient.h #import <Foundation/Foundation.h> @protocol MQTTDelegate <NSObject> /** * @ ...

  7. 《转》Frameset布局

    前二天在写一个HTML界面,用到了Frameset,主要学习都是在下面的文章里,内容写得很详细,值得推荐大家看下. 网址:http://captaincook.iteye.com/blog/36563 ...

  8. Java 开源博客——B3log Solo 0.6.1 正式版发布了!

    Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...

  9. Redis最有用的中文资源,你值得拥有

    只是为了记录资源地址,最好直接访问doc.redisfans.com更美观 Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation ...

  10. Android开发人员必知的开发资源

    developer.android.com 官方开发人员网站推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是以下的这些文章: Devices ...