首页 > 代码库 > 利用jsoup爬取百度网盘资源分享连接(多线程)
利用jsoup爬取百度网盘资源分享连接(多线程)
突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了。知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字,就想到可以自己拼装链接,循环不断的去抽取页面。于是自己分析了下页面结构,就开始了。(uk是10位数的数字,对于0000000001这种uk值还没想到很好的解决办法,对于1000000000这种就可以用uk++来实现不断循环了。)
从一开始写的时候,发现一秒钟就抽取了一个页面,想到之前用的webmagic爬虫里抓取页面就用了java的多线程技术,于是百度。。。直接上代码。
package getBaiduYunURL; import java.io.File; 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{ private long count= 1; public void run() { try{ for(this.count=1800011339;this.count<1813454114;this.count++){ PrintWriter printWriter = new PrintWriter(new FileWriter(new File("D:/自学/BaiduYunData/Data/url.txt"), true)); 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.print(title); Element content = doc.body(); Elements dataems=content.select("[data-ac=active]"); System.out.println(this.count); for(Element dataem:dataems){ Elements lists=dataem.select(".list-item"); String name=dataem.attr("data-fn"); if(name!=""){ System.out.println(name); printWriter.println(name); for(Element listem:lists){ String linkHref = http://www.mamicode.com/url+listem.attr("href");> 代码如上,很简单,我是把抓取的链接放在txt中,下一步就是把这些资源做成可以在线搜索,和很多网盘搜索一样,但是我这个比较低级。
利用jsoup爬取百度网盘资源分享连接(多线程)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。