python实战-HTML形式爬虫-批量爬取电影下载链接

文章目录
  • 一、前言
    二、思路
    1、网站返回内容
    2、url分页结构
    3、子页面访问形式
    4、多种下载链接判断
    三、具体代码的实现
    四、总结
一、前言

喜欢看片的小伙伴,肯定想打造属于自己的私人影院,在线观看的话会有很多限制,所以可以到专门下载电影的网站下载自己想看的电影,如果想要下载大量电影的话,一个一个手点击页面去点击下载链接,实在让人崩溃,那么可以通过技术手段方便我们获取电影链接,看过我前面文章的小伙伴就知道了,我们可以采用python爬虫的形式去批量爬取电影下载链接,然后批量下载,岂不美哉。

对python爬虫还没有了解的小伙伴可以先看看这一片内容(基于python爬虫快速入门),上篇在html形式讲解的代码示例就以及获取了子页的链接,那么接下来将就是继续上手实战,敏感内容我会打码,主要学习的是思路。

https://blog.csdn.net/syl321314362/article/details/127780756
二、思路

首先我们第一步先是分析目标网站的请求结构,页面是怎么返回渲染的,分页形式是怎么样的,子页面是怎么样的形式访问,电影下载链接有没有不同形式的,所以弄大体的结构才有好的思路,把思路用代码的方式实现。

1、网站返回内容

首先我们可以打开浏览器的开发工具页面(快捷键 F12),通过网络请求查看对应的请求去判断,也可以直接python写一个request请求,看看response.text返回的是不是想要的页面html。

在这里插入图片描述

2、url分页结构

电影肯定有很多,所以制作网页的时候要采取分页展现的设计,所以要点击分页栏,查看地址栏url的变化,滚动式加载也是这种思路,观察地址栏url或者网络请求的变化。
在这里插入图片描述

在这里插入图片描述

可以看到地址栏中的url明显的有变化,所以这里一共有212页所以就是list_23_1.html 到 list_23_212.html,我们去页面证实一下,果然没错。
在这里插入图片描述

所以批量爬取就要搞清楚目标的页面结构,那么我们知道有这么多页的时候就要通过for循环去遍历这212页的内容,去匹配获取子页面。

3、子页面访问形式

通过子页面与主页的url拼接即可访问,url = “https://xxxx” + “/html/gndy/dyzz/20221109/63138.html”

在这里插入图片描述
在这里插入图片描述

4、多种下载链接判断

每个子页面的的链接展现的形式是不同的,所以我们要多点击几个子页观察有哪些不同的地方,在爬取链接的时候就需要多加注意多加判断。

实例就有两种形式的链接ftp和magnet,所渲染的标签样式与视频后缀名也是有些差别的。

在这里插入图片描述

在这里插入图片描述

三、具体代码的实现

运行前先安装lxml库

pip install lxml
import re
import time
import urllib3
import requests
from lxml import etree
from urllib.parse import unquote
# 解决requests请求出现的InsecureRequestWarning错误
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
}

for i in range(1, 215):
    # 分页页面首页
    indexUrl = "https://www.xxxxx.com/html/gndy/dyzz/list_23_{}.html".format(i)
    print("="*10 + indexUrl + "="*10)
    res = requests.get(indexUrl, headers=header, verify=False)
    if res.status_code == 200:
        lxml_tree = etree.HTML(res.content)
        # 获取分页页面中的电影页面路径
        href_name = lxml_tree.xpath(
            '//div[@class="co_content8"]//table//a//@href')
        if len(href_name) < 25:
            lxml_tree = etree.HTML(res.text)
            href_name = lxml_tree.xpath(
                '//div[@class="co_content8"]//table//a//@href')
        for urlPath in href_name:
            if "/html/gndy/dyzz/" in urlPath:
                try:
                    # 拼接详细电影页面url
                    url = "https://www.xxxxx.com" + urlPath
                    res2 = requests.get(url=url, headers=header, verify=False)
                    if res2.status_code == 200:
                        # 防止中文乱码
                        res2.encoding = "GBK"
                        lxml_tree2 = etree.HTML(res2.text)
                        # 获取电影下载链接
                        href_name2 = lxml_tree2.xpath(
                            '//div[@id="Zoom"]//a//@href')
                        if href_name2:
                            # 正则匹配获取mkv或mp4格式链接或rmvb格式
                            pattern = re.compile(r'.*.mkv|.*.mp4|.*.rmvb')
                            film = pattern.search(unquote(href_name2[0]))[0]
                            print(film)
                            #下载链接写入文本
                            with open("allFilm.txt", "a", encoding="utf-8") as f:
                                f.write(film + "\n")
                        else:
                            # 记录访问错误的页面
                            with open("fail.txt", "a", encoding="utf-8") as f:
                                f.write(url + "\n")
                    time.sleep(1)
                except Exception as e:
                    print("errer: ", e)
                    continue
        print("total: ", len(href_name))

在这里插入图片描述
在这里插入图片描述

四、总结

技术是一把双刃剑,就看持剑的人是怎么想的,爬虫有风险,操作需谨慎,爬虫被判刑的例子比比皆是,需谨慎。关注我,后续有这两种形式的python实战爬虫还有反防爬虫(反反爬虫)等技术干货,并附带源码,对你有帮助请点个赞,感谢各位帅哥美女。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,Python自动化测试学习等教程。带你从零基础系统性的学好Python!

一、Python学习大纲

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、入门学习视频

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

五、python副业兼职与全职路线

在这里插入图片描述

上述这份完整版的Python全套学习资料已经上传CSDN官方,如果需要可以微信扫描下方CSDN官方认证二维码 即可领取

👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]]安全链接,放心点击

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Python 爬虫教程,可以批量爬取指定网站的图片: 首先,我们需要安装 requests 和 BeautifulSoup 这两个库。可以通过以下命令进行安装: ``` pip install requests pip install beautifulsoup4 ``` 接下来,我们需要编写代码。以下是一个示例代码,可以爬取指定网站的图片并保存到本地: ```python import requests from bs4 import BeautifulSoup import os # 爬取图片的网站 url = "https://www.example.com/" # 请求头,模拟浏览器访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} # 发送请求,获取网页内容 response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") # 创建保存图片的文件夹 if not os.path.exists("images"): os.makedirs("images") # 遍历所有的图片标签,获取图片链接并保存到本地 for img in soup.find_all("img"): img_url = img.get("src") if img_url.startswith("http"): response = requests.get(img_url) with open("images/" + os.path.basename(img_url), "wb") as file: file.write(response.content) print("已保存图片:", img_url) ``` 在上述代码中,我们首先定义了要爬取的网站的 URL。然后,我们使用 requests 库发送一个 GET 请求,获取网页的 HTML 内容。接着,我们使用 BeautifulSoup 库对 HTML 进行解析,获取所有的图片标签。最后,我们使用 requests 库再次发送 GET 请求,获取图片的二进制数据,并保存到本地的 images 文件夹中。 注意,这里我们使用了一个 if 判断来过滤掉非 HTTP 开头的图片链接,以避免出现下载错误的情况。 为了更好的用户体验,代码中还加入了一些注释,方便大家理解。 希望这个简单的 Python 爬虫教程能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值