利用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,操作更方便哦
随机推荐
- maven的pom 提示错误 Failure to transfer com.thoughtworks.xstream:xstream:jar:
pom文件提示错误,信息如下 Description Resource Path Location TypeFailure to transfer com.thoughtwor ...
- hdu 5183(hash)
传送门:Negative and Positive (NP) 题意:给定一个数组(a0,a1,a2,⋯an−1)和一个整数K, 请来判断一下是否存在二元组(i,j)(0≤i≤j<n)使得 NP− ...
- 【iOS】iOS的iTunes文件共享,在程序Document路径
有时候程序开发须要通过沙盒中的 documents目录与用户共享文件,iTunes默认是不支持iTunes file Sharing的,首先设置 info-list的Application suppo ...
- Delphi动态申请数组内存的方法(不使用SetLength,采用和C相似的方式)
procedure TForm1.Button1Click(Sender: TObject);type TArr = array [0..0] of Integer; PArr = ^TArr;v ...
- osc搜索引擎框架search-framework,TngouDB,gso,
项目目的:OSChina 实现全文搜索的简单封装框架 License: Public Domain 包含内容: 重建索引工具 -> IndexRebuilder.java 增量构建索引工具 -& ...
- .Net——使用.net内置处理程序处理自己定义节点Demo
在.net中.由于对不同的节点,都相应着类去对它进行处理,.net里面为了方便.已经内置了一些类供我们使用.使我们在读取配置文件时.不必自己去定义类去处理自己定义的自己定义节点. 以下我们写了这样一个 ...
- C#关于ref与out的总结
原文:C#关于ref与out的总结 首先大概说下函数调用的过程,首先为被调用函数分配存储空间(分为代码区和变量区)之后将调用函数传递过来的变量压栈,然后逐一弹栈进行处理,之后进行运算,将需要返回的变量 ...
- poj1087(最大流)
传送门:A Plug for UNIX 题意:有插座用电器和适配器,用电器有插头,适配器本身有一个插孔和插头,它的作用是可以把别的插头插入到适合该适配器插孔的适配器,然后就可以用适配器的插头接到适合的 ...
- Codeforces Round #296 (Div. 1) E. Triangles 3000
http://codeforces.com/contest/528/problem/E 先来吐槽一下,一直没机会进div 1, 马力不如当年, 这场题目都不是非常难,div 2 四道题都是水题! 题目 ...
- WindowsclientC/C++编程规范“建议”——前言
前言 工作中接触了非常多编程规范.当中最有意思的是,公司近期公布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:"该规范不适用于Windows平台开发".看来这 ...