python-爬虫作业

 

# -*- coding:utf-8 -*-
'''
@Author: 董咚咚
@contact: 2648633809@qq.com
@Time: 2023/7/31 17:02
@version: 1.0
'''
import requests
import re

import xlwt
from bs4 import BeautifulSoup

url = "https://www.dygod.net/html/gndy/dyzz/"
hd = {
    'user-Agent':'Mozilla/4.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}

#linkurl = "https://www.dygod.net/html/gndy/dyzz/20230712/120036.html"
def getmanget(linkurl):
    res = requests.get(linkurl)
    res.encoding = res.apparent_encoding
    soup = BeautifulSoup(res.text,"html.parser")
    ret = soup.find_all("a")
    for n in ret:
        if "magnet" in str(n.string):
            return n.string
    return None

def insertDB():
    pass

def saveExcel(worksheet,count,lst):
    for i in range(6):
        worksheet.write(count,i,lst[i])

#代码正式开始
count = 0   #记录爬取电影的数量,每爬取一次,就在下面的列表里面添加一次
total = []   #用来储存记录信息的列表
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet('sheet1')

for i in range(2,3):   #页面数量,就是从第二页到第八页,页数可以自己测试
    url = "https://www.dygod.net/html/gndy/dyzz/index_"+str(i)+".html"
    #print(url)   #用来测试所爬取的网站是否有效
    res = requests.get(url,headers=hd)
    res.encoding = res.apparent_encoding
    #print(res.text)    #获取相关和列表

    soup = BeautifulSoup(res.text,"html.parser")
    #print(soup.title,type(soup.title))   #查看电影的名字
    ret = soup.find_all(class_="tbspan",style = "margin-top:6px") #此内容都可以用Fn+F12查看,找到所有电影的表格
    for x in ret:   #遍历每个电影的表格
        info = []
        #print(x.find("a").string)   #打印除a标签的内容,即电影的名称
        info.append(x.find("a").string)
        pat = re.compile(r"◎译  名(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000',u'')    #查看电影译名
            print("◎译  名:",n)
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎年  代(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000',u'')
            print("◎年  代:",n)  #打印出相关的年代
            info.append(str(n))

        pat = re.compile(r"◎片  名(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000', u'')
            print("◎片  名:",n)   #打印出相关的片名
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎产  地(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000', u'')
            print("◎产  地:",n)   #打印出相关的片名
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎类  别(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000', u'')
            print("◎类  别:",n)   #打印出相关的片名
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎字  幕(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000', u'')
            print("◎字  幕:",n)   #打印出相关的片名
            info.append(str(n).split("/")[0])

        pat = re.compile(r"◎上映日期(.*)\n")
        ret = re.findall(pat,str(x))
        for n in ret:
            n = n.replace(u'\u3000', u'')
            print("◎上映日期:",n)   #打印出相关的片名
            info.append(str(n).split("/")[0])

        linkurl = "https://www.dygod.net/" + x.find("a").get("href")
        manget = getmanget(linkurl)
        if manget:
            print("下载地址:",manget)
            info.append(str(manget))

        print(count,info)
        saveExcel(worksheet,count,info)
        count+=1
        print("="*150)  #将列表转换成百分比的形式

workbook.save("movie.xls")
print(count)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/56814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(180)---Seeeduino Lotus开发板2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

学习系统编程No.33【生产消费模型】

引言: 北京时间:2023/7/22/14:27,现实和预期往往相差是巨大的,哈哈哈!白天睡不醒,晚上睡不着,就像一个夜猫子一样。熬夜耍手机,我真的是专业的,已经连续好久没有正常睡过…

DAY56:单调栈(二)下一个最大元素Ⅱ(环形数组处理思路)

文章目录 思路写法1完整版环形数组处理:i取模,遍历两遍写法2完整版(环形数组推荐写法)debug测试:逻辑运算符短路特性result数组在栈口取元素,是否会覆盖原有数值? 给定一个循环数组 nums &#…

Unity 性能优化五:渲染模块压力

CPU压力 Batching 在GPU渲染前,CPU会把数据按batch发送给GPU,每发送一次,都是一个drawcall,GPU在渲染每个batch的时候,会切换渲染状态,这里的渲染状态指的是:影响对象在屏幕上的外观的渲染属性…

竞速榜实时离线对数方案演进介绍 | 京东云技术团队

一、背景 竞速榜是大促期间各采销群提供的基于京东实时销售数据的排行榜,同样应对大促流量洪峰场景,通过榜单撬动品牌在京东增加资源投入。竞速榜基于用户配置规则进行实时数据计算,榜单排名在大促期间实时变化,相关排名数据在微…

vscode添加自定义的用户代码片段

在vscode中添加代码片段 选择“新建全局代码片段文件,然后输入文件名(随便输入) 然后会生成文件,安装文件中的Example就可以添加代码片段 里面各个字段的含义: "Print to console:代码片段的名称&…

迷你主机中的战斗机 Intel NUC 12 Serpent Canyon拆解

千呼万唤始出来,新一代游戏和创作者性能怪兽 mini主机 NUC 12 Serpent Canyon(巨蛇峡谷终于发售了,以超紧凑的 2.5 升尺寸提供用户所需的所有性能和创新功能。NUC 12 Enthusiast 还首次将 Intel Deep Link 引入桌面,使 CPU 和 GPU…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板5

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

git常用指令

git add命令 作用:移动文件:工作区-->暂存区 git add .:把所有文件都放到暂存区 git commit命令 作用:移动文件:暂存区-->本地仓库 git status命令 作用:查看修改状态 git log命令 作用&#xf…

天津web前端开发培训班 零基础如何学习前端?

学习Web前端有很多好处,它可以提高你的数字技能,使你更具有竞争力,而且Web前端是一个需求量很大的岗位,有这项技能在手,你可以轻松地找到一份工作。 什么是web前端 前端开发是创建web页面或app等前端界面给用户的过程…

大数据学习教程:Linux 高级教程(上)

一、Linux用户与权限 1. 用户和权限的基本概念 1.1、基本概念 用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理 在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限 对 文件 / 目录 的…

Spring之事务实现方式及原理

目录 Spring事务简介 Spring支持事务管理的两种方式 编程式事务控制 声明式事务管理 Spring事务角色 未开启事务之前 开启Spring的事务管理后 事务配置 事务传播行为 事务传播行为的可选值 Spring事务简介 事务作用:在数据层保障一系列的数据库操作同成功…

VR 变电站事故追忆反演——正泰电力携手图扑

VR(Virtual Reality,虚拟现实)技术作为近年来快速发展的一项新技术,具有广泛的应用前景,支持融合人工智能、机器学习、大数据等技术,实现更加智能化、个性化的应用。在电力能源领域,VR 技术在高性能计算机和专有设备支…

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文:Aligning Bag of Regions for Open-Vocabulary Object Detection 代码:https://github.com/wusize/ovdet…

网络安全进阶学习第九课——SQL注入介绍

文章目录 一、什么是注入二、什么是SQL注入三、SQL注入产生的原因四、SQL注入的危害五、SQL注入在渗透中的利用1、绕过登录验证:使用万能密码登录网站后台等。2、获取敏感数据3、文件系统操作4、注册表操作5、执行系统命令 六、如何挖掘SQL注入1、SQL注入漏洞分类按…

LLaMA系列 | LLaMA和LLaMA-2精简总结

文章目录 1、LLaMA1.1、模型结构1.2、训练方式1.3、结论 2、LLaMA-22.1、相比LLaMA1的升级2.3、模型结构2.3.1、MHA, MQA, GQA区别与联系 2.4、训练方式 1、LLaMA 🔥 纯基座语言模型 《LLaMA: Open and Efficient Foundation Language Models》:https:/…

大麦链接源码 大麦一键生成订单截图

8.4最新版源码 更新了大麦链接模版 更新了大麦订单截图一键生成 下载源码:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

Android 自定义按钮(可滑动、点击)

按钮图片素材 https://download.csdn.net/download/Lan_Se_Tian_Ma/88151085 px 和 dp 转换工具类(Java) // px 和 dp 转换工具类 public class DensityUtil {/*** 根据手机的分辨率从 dip 的单位 转成为 px(像素)*/public static int dip2px(Conte…

Excel技巧 - 管理规则设置一行变色

如何设置某一列单元格的值大于一个值时,该单元格所在的一整行都变色呢? 1、先框选内容区域,点击开始,条件格式,新建规则 2、如果销量大于20,则该行都变为绿色 编辑格式选择:使用公式确定要设置…

springboot第33集:nacos图

./startup.sh -m standalone Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。 鉴…