实例练习----电影天堂抓取下载链接

废话不多说,直接上代码:
package com.sysker.util;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;

public class getVideoUrls {
    private void getHtmlSources() {
        BufferedWriter writerPage = null;
        Document doc = null;
        try {
            writerPage = new BufferedWriter(new FileWriter("ygdy8-"+ System.currentTimeMillis() + ".html"));
            doc = Jsoup.connect(
                    "http://www.ygdy8.net/html/gndy/dyzz/list_23_1.html").get();
            Element list = doc.getElementsByClass("co_content8").first();
            Elements bs = list.getElementsByTag("b");
            String lastPage = list.getElementsByTag("div").first()
                    .getElementsByTag("a").last().attr("href");
            int page = Integer.parseInt(lastPage.substring(
                    lastPage.length() - 8, lastPage.length() - 5));
            writerPage.write("<html><head><title>电影天堂最新电影</title></head><h1>电影天堂最新电影</h1><body>");
            writerPage.write("<p>日期:" + new Date() + "</p><br/>");
            System.out.println(page);
            for (int i = 0; i < 17; i++) {
                doc = Jsoup.connect(
                        "http://www.ygdy8.net/html/gndy/dyzz/list_23_" + (i+1) + ".html").get();
                list = doc.getElementsByClass("co_content8").first();
                bs = list.getElementsByTag("b");
                System.out.println("===============第" + (i + 1)
                        + "页================");
                for (Element element : bs) {

                    String url = element.getElementsByTag("a").first()
                            .attr("abs:href");
                    writerPage.write("<li><a href="+ "\"" + getDownloadUrls(url) + "\"" + ">" +element.text() +"</a></li><br/>\n");
                    writerPage.flush();

                }
            }
            writerPage.write("</body></html>");
            writerPage.flush();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writerPage != null) {

                    writerPage.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }

    private String getDownloadUrls(String url) throws IOException {
        Document doc = Jsoup.connect(url).get();
        Element span = doc.getElementById("Zoom").getElementsByTag("span")
                .first();
        String downloadUrl = span.getElementsByTag("table").last()
                .getElementsByTag("a").first().attr("href");
        return downloadUrl;
    }

    @Test
    public void testName() throws Exception {
        long startTime = System.currentTimeMillis();
        getHtmlSources();
        long endTime = System.currentTimeMillis();
        long useTime = (endTime - startTime) / 1000;
        System.out.println("耗时" + useTime + "s");
    }
}

  • 用到的包:
  • 生成页面效果:
    • 右键复制链接可以直接复制至百度云或迅雷下载
  • 说明:由于页面结构的问题,目前仅支持抓取前17页;
  • 声明:本教程仅供交流学习参考,切勿用于其他用途!

原文地址:https://www.cnblogs.com/caoleiCoding/p/9130778.html

时间: 2024-10-31 10:16:55

实例练习----电影天堂抓取下载链接的相关文章

抓取网页链接

package com.smilezl.scrapy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sq

爬取电影天堂最新电影的名称和下载链接

此次的目标是爬取电影天堂最新200页的最新电影的电影名称和下载链接,电影的下载链接在二级页面,所以需要先匹配一级页面的所有链接,然后逐个请求二级页面,代码如下: """ 爬取电影天堂2019年的电影名称和链接 """ import requests import csv from fake_useragent import UserAgent from lxml import etree import re import time import

使用htmlparse爬虫技术爬取电影网页的全部下载链接

昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚然,我们的重点在于如何灵活运用我们已学的技术,这就需要我们不断的练习,不停的思索和深入发掘,在了解了精髓和意义之后运用到实践中才是技术的最高境界. 今天呢,本着昨天的兴趣,想来爬一爬电影资源,中途为了找一个好用趁手的工具,也是费了不少心思,早上半天基本上都在学习和找资料的过程中度过,下午开始才进入状

Mac用户抓包软件Charles 4.0 破解 以及 抓取Https链接设置

相信大家曾经都是Window的用户,作为前端哪能没有一款抓包工具,抓包工具可以非常便捷的帮助我们分析接口返回报文数据,快速定位问题. 曾经横扫window用户的Fiddler便是我们的挚爱,然而,作为前端开发者还是习惯用高大上的MAC进行开发,本次博客将给大家介绍MAC电脑如何安装抓包工具,以及如何设置HTTPS连接的抓取. 一.下载Charles 4.0 版本的软件. 链接: https://pan.baidu.com/s/1jI5j0O2 密码: u5r2 下载完成后,双击安装即可,直到安装

【转】Nutch源代码研究 网页抓取 下载插件

今天我们来看看Nutch的源代码中的protocol-http插件,是如何抓取和下载web页面的.protocol-http就两个类HttpRespose和Http类,其中HttpRespose主要是向web服务器发请求来获取响应,从而下载页面.Http类则非常简单,其实可以说是HttpResponse的一个Facade,设置配置信息,然后创建HttpRespose.用户似乎只需要和Http类打交道就行了(我也没看全,所以只是猜测). 我们来看看HttpResponse类: 看这个类的源码需要从

爬取电影天堂最新电影的名称和下载链接(增量爬取mysql存储版)

这次的程序是在上次的基础上进行修改,把持久化储存方式改成mysql,并增加了断点续爬功能. import requests import re from fake_useragent import UserAgent import random import time import pymysql from hashlib import md5 from lxml import etree class DianyingtiantangSpider(object): def __init__(se

Java豆瓣电影爬虫——抓取电影详情和电影短评数据

一直想做个这样的爬虫:定制自己的种子,爬取想要的数据,做点力所能及的小分析.正好,这段时间宝宝出生,一边陪宝宝和宝妈,一边把自己做的这个豆瓣电影爬虫的数据采集部分跑起来.现在做一个概要的介绍和演示. 动机 采集豆瓣电影数据包括电影详情页数据和电影的短评数据. 电影详情页如下图所示 需要保存这些详情字段如导演.编剧.演员等还有图中右下方的标签. 短评页面如下图所示 需要保存的字段有短评所属的电影名称,每条评论的详细信息如评论人名称.评论内容等. 数据库设计 有了如上的需求,需要设计表,其实很简单,

使用srapy框架实现豆瓣电影的抓取

1.新建一个项目 scrapy startproject doubanspider 2.编写电影信息item类 3.编写spider类 # -*- coding: utf-8 -*- from scrapy import Request from scrapy.spiders import Spider from doubanspider.items import DoubanMovieItem class DoubanMovieTop250Spider(Spider): name = 'dou

抓取网页链接,并保存到本地

import urllib2 import urllib content=urllib2.urlopen("http://www.cnblogs.com/sayary/archive/2013/03/11/2952638.html").read() ##print content ##<a title="发布于2013-03-10 13:53" ##href="http://www.cnblogs.com/sayary/archive/2013/03