批量抓取某电影网站的下载链接
小熊出擊
已于 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.*?)
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
包含电影信息的匹配对象。
"""