使用 Python 简单获取电影天堂的电影数据 [第一个爬虫小测试]

Python 专栏收录该内容
5 篇文章 1 订阅

一、要求

得到电影天堂的最新下载页面下的相关数据 点击打开 

存储为 csv 格式的表格文件

二、可能遇到的bug和解决

使用正则表达式匹配到没有"《》"的情况

请求链接返回页面有误

部分电影详情页面没有评分导致返回错误

三种小错误都是通过条件判断解决

三、参考代码

import requests
from lxml import etree
import re
from datetime import datetime

# 创建文件名 时间.csv
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
datetime.now().isoformat()
content = str(datetime.now())
pattern = re.compile(r"[0-9]*")     # 正则表达式
result = pattern.findall(content)
file_name = ""
for i in range(0, 12):
    file_name = file_name + result[i]

fp = open(f"./文件/{file_name}.csv", mode="w", encoding="GB18030")        # GB18030是本地计算机excel的默认编码
data = "序号,电影,评分,磁力链接\n"
fp.write(data)
fp.close()

# 解析网页数据
url = "https://www.dy2018.com/html/gndy/dyzz/index.html"
content = requests.get(url)
content.encoding = content.apparent_encoding    # 确定编码
content = content.text

movie_num = 0
if content:
    root = etree.HTML(content)
    pages = root.xpath("//select/option/@value")
    # print(pages)

    for page in pages:
        new_url = "https://www.dy2018.com" + page
        content = requests.get(new_url)
        content.encoding = content.apparent_encoding
        content = content.text

        if content:
            fp = open(f"./文件/{file_name}.csv", mode="a", encoding="GB18030")
            root = etree.HTML(content)
            get_moive = root.xpath("//b/a/@title")  # 获取电影简介

            for name, url in zip(get_moive, root.xpath("//b/a/@href")):
                movie_num += 1
                print(name)

                score_url = "https://www.dy2018.com" + url  # 电影详情页面
                score_content = requests.get(score_url)
                score_content.encoding = score_content.apparent_encoding
                score_content = score_content.text
                # print(score_url)

                movie_name = ""
                score_root = etree.HTML(score_content)
                if score_root.xpath("//strong/text()"):  # 获取评分
                    movie_score = score_root.xpath("//strong/text()")
                else:
                    movie_score = [","]

                tmp_download_url = score_root.xpath("//td[@bgcolor='#fdfddf']/a/text()")  # 获取下载链接
                download_url = str(tmp_download_url[0])
                if re.compile(r",").findall(download_url):
                    download_url = '"' + download_url + '"'

                if re.compile(r"《").findall(name):
                    tmp = re.compile(r"《(.*?)》").findall(name)  # 使用正则表达式获取电影名称
                    movie_name = tmp[0]
                else:
                    movie_name = str(name)
                num = str(movie_num).zfill(5)

                data = num + "," + movie_name + "," + movie_score[0] + "," + download_url + "\n"
                # print(data)
                fp.write(data)
                fp.flush()
            fp.close()
        else:
            print("链接不可用")

else:
    print("链接不可用")

四、测试结果

结果展示为 20190110164728.csv 文件的部分数据:

序号电影评分磁力链接         
1狗十三8.3ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]狗十三HD国语中字.mkv 
2印度暴徒6.1ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]印度暴徒BD中英双字.mkv 
3嘉年华8.5ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]嘉年华BD国语中字.mp4 
4无名之辈8.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]无名之辈HD国语中字.mkv 
5狂暴巨兽6.7ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]k狂暴巨兽BD国英双语中英双字.mp4
6黑镜:潘达斯奈基7.9ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]黑镜:潘达斯奈基HD中字.mkv 
7黄金兄弟5.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]黄金兄弟BD国语中字.mp4 
8神奇动物:格林德沃之罪7.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]sss神奇动物:格林德沃之罪zHD中英双字.mk
9月光光心慌慌6.3ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]月光光心慌慌HD中英双字.mkv 
10无双8.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]无双HD国语中字.mkv  
11憨豆特工36.6ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]憨豆特工3BD中英双字.mp4 
12登月第一人7.6ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]登月第一人HD中英双字.mkv 
13此房是我造8.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]此房是我造BD中英双字.mp4 
14李茶的姑妈5ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]李茶的姑妈HD国语中字.mkv 
15宝贝儿5.4ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]宝贝儿HD高清国语中字.mp4 
16一个小忙7.2ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]一个小忙BD中英双字.mp4 
17你的婚礼7.1ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]你的婚礼BD韩语中字.mkv 
18噩梦娃娃屋6.9ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]噩梦娃娃屋BD中英双字.mp4 
19你好之华7ftp://d:d@a.dygodj8.com:12311/[电影天堂www.dy2018.com]你好之华HD国语中字.mkv 
             

五、小小的总结

(公历)年前接触了 Python ,考虑到毕业设计什么的,当时简单学了一周,知识弄懂了变量什么滴。这次通过张老师的带领,算是跑出来了小页面。当然,就要过年啦,(农历)年前实习也快要结束啦,这就需要更好的学习 Python 啦,时间越来越紧张。慢慢来吧,接下来可以试试数据库什么滴。。。

加油呢,。,。,。

 

  • 4
    点赞
  • 1
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值