利用jsoup爬取百度网盘资源分享连接(多线程)
突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字,就想到可以自己拼装链接,循环不断的去抽取页面。于是自己分析了下页面结构,就开始了
从一开始写的时候,发现一秒钟就抽取了一个页面,想到之前用的webmagic爬虫里抓取页面就用了java的多线程技术,于是百度。。。直接上代码。(抓取过程中发现好多无效资源,垃圾资源,广告资源特别多,所以慢慢的累积了很多垃圾关键字,在抓取过程中过滤)
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 blocke.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 blocke.printStackTrace();}for(int i=0;i<100;i++){new Thread(my).start();}}
}
代码如上,很简单,我是把抓取的链接放在txt中,下一步就是把这些资源做成可以在线搜索,和很多网盘搜索一样,但是我这个比较低级。
利用jsoup爬取百度网盘资源分享连接(多线程)相关推荐
- 利用jsoup爬取百度网盘资源分享连接(多线程)(2)
之前的博客 利用jsoup爬取百度网盘资源分享连接(多线程) 已经说明了怎么抓取数据,抓取完数据就是共享这些资源了,说白了就是搭建一个百度网盘资源搜索网站,我是利用WAMP搭建的. 主页面index. ...
- java 多线程爬取网页,利用jsoup爬取百度网盘资源分享连接(多线程)
突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了.知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字, ...
- 爬取百度网盘资源报user is not authorized, hitcode:119
爬取百度网盘资源报user is not authorized, hitcode:119 一.总结 一句话总结: 可能是百度网盘禁止非客户端环境下载大文件,所以将请求头改为客户端:'User-Agen ...
- 百度网盘外链采集分析 爬取百度网盘用户分享 问题记录
采集的时候uk没什么问题,出错加延时1分钟就好了. 采集文件的时候,errno=-55 出错加延时约10分钟就可以.但还有下面几个问题. 1.文件,文件夹,多文件分享 都有短地址 shorturl , ...
- 【Python】python爬取百度云网盘资源-源码
今天测试用了一下python爬取百度云网盘资源. 标签: <无> 代码片段 [代码][Python]代码 import urllib import urllib.request impor ...
- python爬取百度云网盘资源-源码
今天测试用了一下python爬取百度云网盘资源. 代码片段 import urllib import urllib.request import webbrowser import re def yu ...
- python爬虫之爬取百度网盘
爬虫之爬取百度网盘(python) #coding: utf8 """ author:haoning create time: 2015-8-15 "" ...
- python开源代码百度盘_python爬取百度云网盘资源-源码
今天测试用了一下python爬取百度云网盘资源. 代码片段import urllib import urllib.request import webbrowser import re def yun ...
- redis windows版下载教程,及双系统百度网盘资源分享
1.redis windows版本下载链接 (注意:3.2.100已经是redis windows最新版) https://github.com/microsoftarchive/redis/rele ...
最新文章
- 批量建立用户和设置密码,批量删除用户脚本
- Exchange Server 2010安装测试
- js中console在一行内打印字符串和对象
- 信息系统项目管理师-计算题专题(三)上午计算小题
- Laravel解决报错500 Server Error: .env.example将其复制一份重命名为env
- c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
- 【自适应盲均衡7】分数间隔的复数常模算法(FSE-CMA)
- 00048_this关键字
- android 生成长截图,【UNIAPP截长图】方案之一:滚动截屏 Android
- oracle数据库基本语句
- v-for中的key
- 笔记本电脑找不到计算机配置,笔记本电脑收不到wifi的解决步骤_笔记本电脑搜不到wifi怎么设置-win7之家...
- 数据库中超码、候选码、主码的理解
- u盘图片损坏怎么恢复
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
- 进入计算机管理界面win7,win7系统打开服务管理界面的操作方法
- 寻找突破口语学习技巧
- 美团技术团队:实例详解机器学习如何解决问题
- C++ escape和unescape算法
- Ubuntu8.04下安装Eric以及使用QtDesigner4教程
热门文章
- 酒店智能门锁方案功能及其特点介绍
- STM32+MS5611测气压温度例程详解,测试无误
- 为什么磁盘1次随机读需10ms
- 安全狗漏洞通告|Linux kernel越界写入漏洞解决方案
- vue项目中使用百度地图api完成自定义搜索功能(包含搜索详细地理位置)
- MyBatis 01 快速入门
- 从头到脚说单测——谈有效的单元测试(下篇)
- 被周董和郎朗拨弄,钢琴的“内心”如何掀起“波澜”?
- 兼容并“包”NLP评价指标:Robustness Gym框架
- 穿过已知点画平滑曲线(3次贝塞尔曲线)