网页抓取解密(网页内磁力链接软件界面如下图:获取磁力链接 )

优采云 发布时间: 2022-01-02 14:18

  网页抓取解密(网页内磁力链接软件界面如下图:获取磁力链接

)

  最近,我从某个视频资源网站下载了*敏*感*词*。大约有30集。如果手动需要把每一集的磁链一个一个复制下来下载,比较麻烦,所以写了这个提取磁链的小工具。

  理论上,任何在html代码中支持磁力链接的网页,可能会因为一些特殊的反爬虫措施或其他保护措施而无法获取。

  由于磁链下载速度可能会因为资源太少而变慢,下一步就是使用百度云的API将提取的磁链添加到百度云离线下载中,然后使用Pandownload等工具进行下载。

  目前可以先用这个程序提取磁力链接,再用百度云批量离线脚本(%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98% E6%89 %B9%E9%87%8F%E7%A6%BB%E7%BA%BF)批量创建离线下载,但是字数太多好像报错,需要一段时间。

  我不经常使用java,一般不做UI,所以技术很弱。请见谅,如果您有任何问题或建议,欢迎讨论!

  网页中的磁力链接

  

  软件界面如下:

  获取磁力链接

  

  百度云批量离线脚本:

  

  在 URL 框中输入收录磁性链接的 URL,然后单击“确定”。一段时间后,所有磁力链接将在下面的框中输出。有时由于网络等原因,无法获取所有网页代码,并显示“未获取所有内容”。这个时候应该可以稍等片刻再试。然后复制下面提取的磁力链接,打开迅雷(如果遇到版权问题,论坛上有迅雷破解版)即可下载。

  下载链接:链接:密码​​:plaf

  请注意:如果您的电脑已经安装了JAVA环境,则只需要下载里面的jar包即可。如果没有,则需要下载rar压缩包并运行里面的exe文件。

  源代码:

  [Java] 纯文本视图复制代码

  package getMagnet;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import javax.swing.JTextArea;

import javax.swing.JButton;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.regex.Pattern;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.regex.Matcher;

final class ReadHtml extends Thread{

public String pageUrl, encoding;

public StringBuffer[] html;

ReadHtml(String _pageUrl, String _encoding, StringBuffer[] _html) {

pageUrl = _pageUrl;

encoding = _encoding;

html = _html;

}

@Override

public void run() {

try {

URL url = new URL(pageUrl);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setDoOutput(false);

conn.setDoInput(true);

conn.setUseCaches(false);

conn.setRequestMethod("GET");

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36");

conn.connect();

int code = conn.getResponseCode();

if(code!=HttpURLConnection.HTTP_OK){

throw new Exception("HttpURLConnection Error! Response Code = "+code);

}

InputStreamReader isr = new InputStreamReader(conn.getInputStream(), encoding);

BufferedReader in = new BufferedReader(isr);

String line;

while((line = in.readLine())!=null) {

html[0].append(line);

}

in.close();

conn.disconnect();

}catch(Exception e) {

System.err.println(e);

}

}

}

public class GetMagnet {

private JFrame frame;

private JTextField URL;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

GetMagnet window = new GetMagnet();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the application.

*/

public GetMagnet() {

initialize();

}

/**

* Initialize the contents of the frame.

*/

private void initialize() {

frame = new JFrame();

frame.setResizable(false);

frame.setTitle("\u83B7\u53D6\u78C1\u529B\u94FE\u63A5");

frame.setBounds(100, 100, 672, 502);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(null);

JLabel lblNewLabel = new JLabel("URL");

lblNewLabel.setBounds(10, 23, 54, 15);

frame.getContentPane().add(lblNewLabel);

URL = new JTextField();

URL.setBounds(63, 20, 511, 21);

frame.getContentPane().add(URL);

URL.setColumns(1000);

JTextArea Magnet = new JTextArea();

Magnet.setBounds(63, 58, 583, 396);

JScrollPane scrollMagnet = new JScrollPane(Magnet);

scrollMagnet.setBounds(63, 58, 583, 396);

scrollMagnet.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

scrollMagnet.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

frame.getContentPane().add(scrollMagnet);

JButton OK = new JButton("OK");

OK.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

StringBuffer html[] = {new StringBuffer()};

ReadHtml rh = new ReadHtml(URL.getText(), "UTF-8", html);

boolean success = false;

try {

rh.start();

for(int i=5;i>0;--i) {

frame.setTitle("\u83B7\u53D6\u78C1\u529B\u94FE\u63A5\uFF08\u7B49\u5F85"+i+"\u79D2...\uFF09");

rh.join(1000);

}

if(rh.isAlive()) {

rh.stop();

success = false;

}else {

success = true;

}

} catch (Exception ex) {

System.err.println(ex);

}

String html0 = html[0].toString();

int index = 0;

StringBuffer magnets = new StringBuffer();

int count = 0;

String regex = "magnet:\\?xt=urn:btih:[A-za-z0-9]{40,40}";

final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

final Matcher matcher = pattern.matcher(html0);

LinkedList MagnetList = new LinkedList();

while(matcher.find()) {

String temp = matcher.group();

boolean exist = false;

for(String Magnet:MagnetList) {

if(Magnet.equals(temp)) {

exist = true;

break;

}

}

if(!exist) {

magnets.append(temp+"\n");

MagnetList.add(temp);

++count;

}

}

if(success) {

frame.setTitle("\u83B7\u53D6\u78C1\u529B\u94FE\u63A5\uFF08\u5DF2\u83B7\u53D6"+count+"\u6761\uFF09");

}else {

frame.setTitle("\u83B7\u53D6\u78C1\u529B\u94FE\u63A5 \u672A\u83B7\u53D6\u6240\u6709\u5185\u5BB9\uFF0C\u8bF7\u91CD\u8BD5\uFF01\uFF08\u5DF2\u83B7\u53D6"+count+"\u6761\uFF09");

}

Magnet.setText(magnets.toString());

}

});

OK.setBounds(584, 19, 62, 23);

frame.getContentPane().add(OK);

JLabel lblNewLabel_1 = new JLabel("Magnet");

lblNewLabel_1.setBounds(10, 62, 54, 15);

frame.getContentPane().add(lblNewLabel_1);

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线