python批量爬取某影天堂的下载地址以及500多部链接分享

查看 130|回复 10
作者:billsmiless   
python批量爬取某影天堂的下载地址以及500多部链接分享
1、前言
最近想搞了本地影音服务器,但没有片源,所有就想批量爬一个,分享一下,也加深下记忆。同时把已经爬好的500多部的链接一并分享给大家。视频我都下完了。 过程比较简单,但删了可惜了,就分享出来。完整代码与链接都放在文末,为了发扬分享的精神(反对伸手党),我给大家加了点难度,不过分吧
2、分析
这里下载的是经典分类的电影,所以打开该页面,是一个列表页,从中可以取得详情地址以及基本信息,如下图


000.jpg (130.02 KB, 下载次数: 0)
下载附件
1列表分析
2024-1-8 16:11 上传

拿到详情地址后,跳转到详情页,从详情页取下载链接,如下图


111.jpg (130.65 KB, 下载次数: 0)
下载附件
2详情分享
2024-1-8 16:11 上传

下面说说批量的思路,观察每页的列表页的链接,可以确定不同的列表页中的html链接是有一个索引递增的。所以循环就可以了
3、实现
比较简单,说说思路吧
1、首先根据要开始的页号与准备解析的页数,循环生成列表的url
2、根据列表url,代码通过浏览器打开url,取得html内容,从中取得影片基本信息以及详情url,以json格式保存
3、代码通过浏览器打开详情url,从详情url中读取下载链接,将下载链接添加到json里
4、导出json文件到本地
python通过selenium调用浏览器,安装命令
pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
导出的json文件中,包含所有清晰度的链接。
通过代码打开浏览器访问html
def getHtmlContent(url) :
        driver = webdriver.Chrome()  # 使用谷歌浏览器
        driver.get(url)  
        # 此时网页已经完全加载,包括由JavaScript动态插入的内容  
        html_source = driver.page_source  
        driver.close()
        return html_source
生成urls.txt的文件名,若存在,则索引加1,如urls1.txt、urls2.txt
def getUrlFilePath(index=0) :
        urlFileName = 'urls.txt'
        if index > 0 :
                urlFileName = 'urls'+str(index)+'.txt'
        filePath = './url/'
        # 若不存在,创建临时目录
        if os.path.isdir(filePath) == False :
                os.makedirs(filePath, exist_ok=True)
        filePath = filePath + urlFileName
        #若不存在,则直接返回
        if os.path.exists(filePath) == False :
                return filePath
        else :
                return getUrlFilePath(index + 1)
BeautifulSoup中的正则表达式的运用,搜索所有包含豆瓣评分的标签
soup = BeautifulSoup(html_content, 'html.parser')
jsonArr = []
scoreArr = soup.find_all(string=re.compile('豆瓣评分'))
4、注意事项
a、一次不要爬太多页,建议不要超过5页,多了时间太久,万一哪个卡死了,就完蛋了。
b、如果浏览器打开页面卡在白屏太久,可以先在浏览器打开该页面,再运行代码。
c、请使用谷歌浏览器
5、Demo以及说明
两个python文件,一个是解析取得json的,一个是从json中得到地址的。
先运行dytt.py导出json数据,再运行另一个。如下图


333.jpg (114.61 KB, 下载次数: 0)
下载附件
3代码说明
2024-1-8 16:11 上传

下载地址

dytt.zip
(84.46 KB, 下载次数: 152, 售价: 1 CB吾爱币)
2024-1-8 16:13 上传
点击文件名下载附件
某影天堂批量代码以及500多部地址
售价: 1 CB吾爱币         [记录]
下载积分: 吾爱币 -1 CB

下载地址, 链接

odmin   

[Python] 纯文本查看 复制代码from selenium import webdriver
from selenium.webdriver.common.by import By
def get_href_with_selenium():
    url = 'https://www.dy2018.com/html/gndy/dyzz/index.html'
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  # 无头模式,不打开浏览器窗口
    driver = webdriver.Chrome(options=options)
    driver.get(url)
    # 使用 Selenium 定位元素
    a_elements = driver.find_elements(By.XPATH, '//div[@class="co_content8"]/ul//a')
    # 遍历获取到的href属性
    for i in range(len(a_elements)):
        # 重新获取 a 元素列表
        a_elements = driver.find_elements(By.XPATH, '//div[@class="co_content8"]/ul//a')
        # 获取href属性
        href = a_elements[i].get_attribute('href')
        # print("Href:", href)
        # 使用 WebDriver 对象打开链接
        driver.get(href)
        # 在新的页面中定位元素
        try:
            # 定位新页面中的元素
            download_links = driver.find_elements(By.XPATH, '//*[@id="downlist"]/table/tbody/tr/td/a')
            # 输出或处理获取到的下载链接信息
            for download_link in download_links:
                download_href = download_link.get_attribute('href')
                print("Download link:", download_href)
        except Exception as e:
            print("Unable to locate download links", e)
        # 回到初始页面或者其他操作
        driver.back()  # 返回初始页面或者前一页
    driver.quit()
get_href_with_selenium()
hlowld   

支持一个,感谢分享
dingqh   

来晚了可就没有了,,,冲
YYDS3721   

冲!!!!!!!感谢大佬
sdieedu   

可以看  电影了
CykaBlyat   

感谢分享
pj666a   

感谢分享,不错
176xuexi   

不错不错,值得学习
alanyelan   

谢谢分享。话说这网站居然还在呢。老网站了。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部