利用jsoup爬取百度网盘资源分享连接(多线程)
突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是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爬取百度网盘资源分享连接(多线程)的更多相关文章
- 爬取百度网盘资源报user is not authorized, hitcode:119
爬取百度网盘资源报user is not authorized, hitcode:119 一.总结 一句话总结: 可能是百度网盘禁止非客户端环境下载大文件,所以将请求头改为客户端:'User-Agen ...
- [PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索
标题起的太大了,都是骗人的.最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台.用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址.就是这么一个简单的功能,类似很多的网盘搜索类网 ...
- 利用Python爬虫实现百度网盘自动化添加资源
事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...
- 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源
前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...
- Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统
Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...
- 利用xpath爬取招聘网的招聘信息
爬取招聘网的招聘信息: import json import random import time import pymongo import re import pandas as pd impor ...
- python 利用selenium爬取百度文库的word文章
今天学习如何使用selenium库来爬取百度文库里面的收费的word文档 from selenium import webdriver from selenium.webdriver.common.k ...
- 200G网盘资源分享
今日偶得大量网盘资源,遂写一博文以分享! 来源:HACK学习呀,微信公众号:HACK学习呀 文件名 链接 提取密码 2015cracer入侵入门到精通视频教程 点我查看 trf3 一笔√带过入侵教程 ...
- 网盘资源分享:你不知道的JavaScript(上)
链接:https://pan.baidu.com/s/1UEBetOr2Z94oEeu5VsQYXQ 提取码:etts 复制这段内容后打开百度网盘手机App,操作更方便哦
随机推荐
- hash应用以及vector的使用简介:POJ 3349 Snowflake Snow Snowflakes
今天学的hash.说实话还没怎么搞懂,明天有时间把知识点总结写了,今天就小小的写个结题报告吧! 题意: 在n (n<100000)个雪花中判断是否存在两片完全相同的雪花,每片雪花有6个角,每个角 ...
- Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试
百度定义:Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对很多其它.包含string(字符串).list(链表).set(集合).zset(sort ...
- C++易vector
很长一段时间没有动手编写C++计划.无非就是模仿后STL对,虽然达不到标准STL该程序.但简单的功能来实现. STL事实上,深刻:泛型编程.容器.算法.适配器...有的是内容能够学.以下是依据STL源 ...
- Xamarin 安装教程 支持Visual Studio 2013
本文的前提是你已经正确的安装了VS 2013. 本文的全部步骤在Win7 Ultimate 64系统上測试通过.支持VS 2013,我用的版本号是VS 2013 update2. 安装 1. ...
- [C++]引用浅析
Date:2013-12-22 Summary: 引用数据类型的一些概念记录(沟通中提到引用必须结合语境才能知道说的是引用变量还是“引用”这一行为,再次提到引用指的一般是引用变量) Contents: ...
- 算法起步之Bellman-Ford算法
原文:算法起步之Bellman-Ford算法 从这篇开始我们开始介绍单源最短路径算法,他是图算法之一,我们前面说的贪心,图的遍历,动态规划都是他的基础,单源最短路径其实说的就是图中节点到节点的最短路径 ...
- 每个Android开发者必须知道的资源集锦
英文原文:Resources every Android developer must know 随着 Android 平台持续惊人的增长,越来越多的开发人员开始工作于 Android 应用程序.而且 ...
- CCEditBox/CCEditBoxImplIOS
#ifndef __CCEditBoxIMPLIOS_H__ #define __CCEditBoxIMPLIOS_H__ #include "cocos2d.h" #if (CC ...
- Enum实现单例模式
package com.wjy.effective; public enum Singleton { INSTANCE; private int numa; private int numb; pub ...
- 谈谈android反编译和防止反编译的方法(转)
谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...