批量抓取某电影网站的下载链接

批量抓取某电影网站的下载链接

批量抓取某电影网站的下载链接

小熊出擊

已于 2024-05-04 14:25:32 修改

阅读量2.8k

收藏

35

点赞数

9

CC 4.0 BY-SA版权

分类专栏:

flask

#爬虫

文章标签:

python

爬虫

selenium

于 2024-05-04 14:23:21 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_37806690/article/details/138441190

flask

同时被 2 个专栏收录

4 篇文章

订阅专栏

#爬虫

1 篇文章

订阅专栏

文章描述了一个使用Python编程语言和Selenium库实现的MovieScraper类,该类通过网络爬虫技术从电影天堂网站抓取2024必看热片的电影名称和下载地址。它利用headless模式的Edge浏览器和正则表达式处理HTML,提取所需的数据。

摘要生成于

C知道

,由 DeepSeek-R1 满血版支持,

前往体验 >

思路:

进入电影天堂首页,提取到主页面中的每一个电影的背后的那个urL地址 a. 拿到“2024必看热片”那一块的HTML代码 b. 从刚才拿到的HTML代码中提取到href的值访问子页面,提取到电影的名称以及下载地址 a. 拿到子页面的页面源代码 b. 数据提取

代码实现:

from tqdm import tqdm

import requests

import re

from selenium import webdriver

from selenium.webdriver.edge.options import Options

class MovieScraper:

"""

MovieScraper类用于从网站抓取电影信息。

属性

----------

edge_options : Options

用于配置webdriver的selenium Options对象

web_driver : webdriver

用于与网站交互的selenium webdriver

request_headers : dict

包含请求头的字典

方法

-------

get_response(url)

向指定的URL发送GET请求并返回响应。

get_movie_list_html(response)

从响应中提取电影列表的HTML。

get_sub_url_list(movie_list_html)

从电影列表HTML中提取子URL。

get_movie_info(child_response)

从子URL的响应中提取电影信息。

scrape(target_url)

从指定的URL抓取电影信息并写入文件。

"""

def __init__(self):

"""初始化MovieScraper,配置webdriver和请求头。"""

self.edge_options = Options()

self.edge_options.add_argument("headless")

self.web_driver = webdriver.Edge(options=self.edge_options)

self.request_headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"

}

def get_response(self, url):

"""

向指定的URL发送GET请求并返回响应。

参数

----------

url : str

要发送请求的URL。

返回

-------

response : Response

GET请求的响应。

"""

response = requests.get(url, headers=self.request_headers)

response.encoding = "gbk"

return response

def get_movie_list_html(self, response):

"""

从响应中提取电影列表的HTML。

参数

----------

response : Response

要提取HTML的响应。

返回

-------

movie_list_html : str

电影列表的HTML。

"""

movie_list_pattern = re.compile(r'2024必看热片.*?

    (?P.*?)
', re.S)

movie_list_result = movie_list_pattern.search(response.text)

return movie_list_result.group("html")

def get_sub_url_list(self, movie_list_html):

"""

从电影列表HTML中提取子URL。

参数

----------

movie_list_html : str

电影列表的HTML。

返回

-------

sub_url_list : iterator

子URL的迭代器。

"""

sub_url_pattern = re.compile(r"

  • return sub_url_pattern.finditer(movie_list_html)

    def get_movie_info(self, child_response):

    """

    从子URL的响应中提取电影信息。

    参数

    ----------

    child_response : Response

    要提取电影信息的响应。

    返回

    -------

    movie_info_result : Match

    包含电影信息的匹配对象。

    """

    movie_info_pattern = re.compile(r'◎片 名 (?P.*?)

    return movie_info_pattern.search(child_response.text)

    def scrape(self, target_url):

    """

    从指定的URL抓取电影信息并写入文件。

    参数

    ----------

    target_url : str

    要抓取电影信息的URL。

    """

    self.web_driver.get(target_url)

    response = self.get_response(target_url)

    movie_list_html = self.get_movie_list_html(response)

    sub_url_list = self.get_sub_url_list(movie_list_html)

    with open("电影天堂.txt", "w", encoding="utf-8") as file:

    for sub_url in tqdm(sub_url_list, desc="处理URL中", unit="URL"):

    child_url = target_url + sub_url.group("sub_url")

    child_response = self.get_response(child_url)

    movie_info_result = self.get_movie_info(child_response)

    download_link = movie_info_result.group("download")

    file.write(download_link + "\n")

    self.web_driver.quit()

    print("爬取完毕")

    if __name__ == "__main__":

    scraper = MovieScraper()

    scraper.scrape("https://www.dy2018.com/")

    效果:

  • 相关创意

    9款奶昔的做法
    365bet体育在线官

    9款奶昔的做法

    📅 07-27 👁️ 408
    【冬奥“冷”知识】冰球不是“球” 上场前要“冷冻”
    4.视频传输协议
    bt365网址

    4.视频传输协议

    📅 07-11 👁️ 1768
    你一定好奇,摄影师们是怎样用 VSCO Cam 修照片的
    鼠标很小怎么办 Win10系统设置鼠标大小的方法教程[多图]
    日本队发布世界杯进军宣传片 以看见最佳景色为目标挑战美加墨三国
    王者荣耀怎么改性别 王者荣耀更改性别教程
    注册送365

    王者荣耀怎么改性别 王者荣耀更改性别教程

    📅 07-29 👁️ 3761
    卡罗拉和福克斯哪个更值得入手
    bt365网址

    卡罗拉和福克斯哪个更值得入手

    📅 07-29 👁️ 8840