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

一、要求

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

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

五、小小的总结

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

加油呢,。,。,。

 

你可能感兴趣的:(Python)