返回列表 发帖

网络爬虫_爬(电影天堂)

例子一:
保存通过URL(https://m.dytt8.net/index2.htm)获取到的网页源代码和内容:

连接公网安装第三方库(requests):
C:\Users\jacky\Desktop>pip3 install requests -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com


脚本内容:
#coding=utf-8
import requests

url = 'https://m.dytt8.net/index2.htm' #网站 (电影天堂)的URL

response = requests.get(url=url)
response.encoding = 'gbk' #有些网站使用gbk,有些网站使用utf-8
Key_1 = response.text
#print(Key_1)

Path_1 = "./1.txt"

f_name = open(Path_1,'w',encoding='utf-8') #写入(覆盖)文件内容
Result_1 = f_name.write(Key_1)

f_name.close()


运行脚本的结果:(脚本所在目录下会生成文件1.txt,文件里会包含网页源代码和内容)
C:\Users\jacky\Desktop>python xx.py

C:\Users\jacky\Desktop>





######

例子二:
从例子一获取的数据中筛选出版块[最新电影下载]下的所有电影名称:

笺注:
版块[最新电影下载]下的电影名称格式,如下:
·[<a href="/html/gndy/dyzz/index.html">最新电影下载</a>]<a href='/html/gndy/dyzz/20220527/62647.html'>2022年剧情《以青春之名》HD国语中字</a><br/>

·[<a href="/html/gndy/dyzz/index.html">最新电影下载</a>]<a href='/html/gndy/dyzz/20220527/62645.html'>2022年爱情喜剧《替身演员》BD中英双字</a><br/>

·[<a href="/html/gndy/dyzz/index.html">最新电影下载</a>]<a href='/html/gndy/dyzz/20220527/62646.html'>2021年悬疑惊悚《黑匣子/黑盒线索》BD中字</a><br/>


脚本内容:
#coding=utf-8
from io import StringIO
String_1 = StringIO()

def func1(): #读取文件内容
        Path_1 = "./1.txt"
        f_name = open(Path_1,'r',encoding='utf-8')

        fields_1 = f_name.readlines() #输出结果为列表,包含换行符
        f_name.close()
       
        func2(fields_1)

       
def func2(fields_1): #从func1()获得的数据中进行筛选

        K_1 = "最新电影下载</a>" #关键字  
       
        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = f"{Key_1.split('html')[4][2:][:-10]}\n" #以'html'为分隔符进行分割后,取第五项,然后去掉前面2个字符,再去掉最后10个字符,最后换行
                        String_1.write(Result_1)
       
        Result_2 = String_1.getvalue()
        Result_2 = Result_2.rstrip('\n') #去除结果最后(右边)的一个换行符
       
        print("版块[最新电影下载]下的所有电影名称:")
        print(Result_2)

if __name__ == '__main__':

        func1()


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
版块[最新电影下载]下的所有电影名称:
2021年剧情灾难《峰爆/无限救援》BD国语中字
2022年剧情《以青春之名》HD国语中字
2022年爱情喜剧《替身演员》BD中英双字
2021年悬疑惊悚《黑匣子/黑盒线索》BD中字
2022年动作《记忆/失忆刺客/记忆杀神》BD中英双字
2022年科幻动作喜剧《刺猬索尼克2》HD中英双字
2022年纪录片《网络炼狱:揭发N号房》BD韩语中字
2022年动画喜剧《奇奇与蒂蒂:救援突击队》BD中英双字
2022年科幻惊悚《双重躯体》BD中英双字
2021年剧情传记《幸存者》BD中英双字
2022年喜剧奇幻《瞬息全宇宙》BD中英双字
2022年喜剧《重返毕业季》BD中英双字
2022年动作《青面修罗》HD国语中英双字
2022年动作科幻《暗夜博士:莫比亚斯》BD中英双字
2022年动作冒险《北欧人》BD中英双字


C:\Users\jacky\Desktop>





######

例子三:
从例子一获取的数据中筛选出版块[最新电影下载]下的所有电影名称:

脚本内容:(使用正则表达式)
#coding=utf-8
import re #导入正则表达式的模块(内置模块,不用额外安装)

def func1(): #读取文件内容
        Path_1 = "./1.txt"
        f_name = open(Path_1,'r',encoding='utf-8')

        fields_1 = f_name.readlines() #输出结果为列表,包含换行符
        f_name.close()
       
        func2(fields_1)

       
def func2(fields_1): #从func1()获得的数据中进行筛选

        print("版块[最新电影下载]下的所有电影名称:")
       
        K_1 = "最新电影下载</a>" #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?html'>(.*?)</a><br/>.*?")
                        Result_2 = Result_1.findall(Key_1)
                        print(Result_2[0])

if __name__ == '__main__':

        func1()


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
版块[最新电影下载]下的所有电影名称:
2021年剧情灾难《峰爆/无限救援》BD国语中字
2022年剧情《以青春之名》HD国语中字
2022年爱情喜剧《替身演员》BD中英双字
2021年悬疑惊悚《黑匣子/黑盒线索》BD中字
2022年动作《记忆/失忆刺客/记忆杀神》BD中英双字
2022年科幻动作喜剧《刺猬索尼克2》HD中英双字
2022年纪录片《网络炼狱:揭发N号房》BD韩语中字
2022年动画喜剧《奇奇与蒂蒂:救援突击队》BD中英双字
2022年科幻惊悚《双重躯体》BD中英双字
2021年剧情传记《幸存者》BD中英双字
2022年喜剧奇幻《瞬息全宇宙》BD中英双字
2022年喜剧《重返毕业季》BD中英双字
2022年动作《青面修罗》HD国语中英双字
2022年动作科幻《暗夜博士:莫比亚斯》BD中英双字
2022年动作冒险《北欧人》BD中英双字

C:\Users\jacky\Desktop>





######

例子四:
使用网站 (电影天堂)的搜索框:

笺注:
在搜索框里搜索“浪客剑心”,会得到以下URL:(有些网站的URL里不能直接使用中文)
http://s.ygdy8.com/plus/s01.php?typeid=1&keyword=%C0%CB%BF%CD%BD%A3%D0%C4


脚本内容:
#coding=utf-8
import requests

Key_a = "%C0%CB%BF%CD%BD%A3%D0%C4"

url = 'http://s.ygdy8.com/plus/s01.php?typeid=1&keyword=' + Key_a

response = requests.get(url=url)
response.encoding = 'gbk' #有些网站使用gbk,有些网站使用utf-8
Key_1 = response.text
#print(Key_1)

Path_1 = "./2.txt"

f_name = open(Path_1,'w',encoding='utf-8')
Result_1 = f_name.write(Key_1)

f_name.close()


脚本运行的结果:(脚本所在目录下会生成文件2.txt,文件里会包含网页源代码和内容)
C:\Users\jacky\Desktop>python xx.py

C:\Users\jacky\Desktop>





######

例子五:
输出从网站 (电影天堂)的搜索框里搜索“浪客剑心”而获得的电影名:

笺注:
从搜索框里搜索“浪客剑心”,而获得的电影名称格式,如下:
<td width='55%'><b><a href='/html/gndy/dyzz/20210801/61694.html'>2021年冒险动作《<font color='red'>浪客剑心</font>最终章追忆篇》BD日语中字</a></b></td>

<td width='55%'><b><a href='/html/gndy/dyzz/20210620/61549.html'>2021年动作《<font color='red'>浪客剑心</font>最终章人诛篇》BD日语中字</a></b></td>

<td width='55%'><b><a href='/html/gndy/dyzz/20130103/40879.html'>2012年动作《<font color='red'>浪客剑心</font>/神剑闯江湖》720p.BD中英双字幕</a></b></td>


脚本内容:
#coding=utf-8
import requests
import re

def func1():
        Key_a = "%C0%CB%BF%CD%BD%A3%D0%C4"

        url = 'http://s.ygdy8.com/plus/s01.php?typeid=1&keyword=' + Key_a

        response = requests.get(url=url)
        response.encoding = 'gbk'
        Key_1 = response.text

        Path_1 = "./2.txt"

        f_name = open(Path_1,'w',encoding='utf-8')
        Result_1 = f_name.write(Key_1)

        f_name.close()
       
        func2()

       
def func2(): #从文件中读取数据,再对数据进行筛选       
        Path_1 = "./2.txt"
        f_name = open(Path_1,'r',encoding='utf-8')

        fields_1 = f_name.readlines() #输出结果为列表,包含换行符
        f_name.close()

        print("搜索(浪客剑心)所获得的电影名称:")

        K_1 = "<td width='55%'" #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?html'>(.*?)</a></b>.*?")
                        Result_2 = Result_1.findall(Key_1)
       
                        a = Result_2[0].split("<font color='red'>")[0]
                        b = Result_2[0].split("<font color='red'>")[1]
                        Result_3 = a + b
                       
                        c = Result_3.split("</font>")[0]
                        d = Result_3.split("</font>")[1]
                        Result_4 = c + d
                        print(Result_4)
       

if __name__ == '__main__':

        func1()


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
搜索(浪客剑心)所获得的电影名称:
2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字
2021年动作《浪客剑心最终章人诛篇》BD日语中字
2012年动作《浪客剑心/神剑闯江湖》720p.BD中英双字幕
2014年动作《浪客剑心:京都大火篇》BD中文字幕
2014年动作《浪客剑心:传说的完结篇》BD中文字幕


C:\Users\jacky\Desktop>





######

例子六:
获取电影《浪客剑心最终章追忆篇》的相关内容:

笺注:
电影名称的格式,如下:
<div class="title_all"><h1><font color=#07519a>2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字</font></h1></div>

豆瓣评分的格式,如下:
◎豆瓣评分 8.8/10 from 1607  users<br />

导演的格式,如下:
◎导  演 大友启史 Keishi Ohtomo<br />

主演的格式,如下:
◎主  演 佐藤健 Takeru Satoh<br />

编剧的格式,如下:
◎编  剧 和月伸宏 Nobuhiro  Watsuki<br />    &nbsp;&nbsp; 大友启史 Keishi Ohtomo<br />◎

简介的格式,如下:
◎简  介<br /><br />  幕府末期,日本陷入动荡。绯村剑心因剑术高超,被冠以&ldquo;刽子手拔刀斋&rdquo;之名,效力于长州藩倒幕部队首领桂小五郎的手下。一天,剑心救下一位名为雪代巴的年轻女子,却被其目睹了杀人行径,他只好将她带到长州藩众人的落脚处。不久后,长州藩武士因池田屋事件引兵上京,随后于禁门之变中战败。剑心与巴以夫妻名义隐居乡间,他第一次感受到了内心的安定。然而,巴的突然失踪打破了这份平静,剑心脸上的十字伤之谜也终于被揭开。<br /><br />


脚本内容:
#coding=utf-8
import requests
import re

def func1(): #获取电影《浪客剑心最终章追忆篇》的网页源代码和内容
        url = 'https://www.ygdy8.com/html/gndy/dyzz/20210801/61694.html'

        response = requests.get(url=url)
        response.encoding = 'gbk'
        Key_1 = response.text

        Path_1 = "./3.txt"

        f_name = open(Path_1,'w',encoding='utf-8') #写入(覆盖)文件内容
        Result_1 = f_name.write(Key_1)
        f_name.close()
       
        func2()


def func2(): #从文件中读取数据       
        Path_1 = "./3.txt"
        f_name = open(Path_1,'r',encoding='utf-8')

        fields_1 = f_name.readlines() #输出结果为列表,包含换行符
        f_name.close()
       
        func3(fields_1)
        func4(fields_1)
        func5(fields_1)
        func6(fields_1)
        func7(fields_1)
        func8(fields_1)
       

def func3(fields_1): #输出电影名称

        K_1 = '<div class="title_all"><h1>' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u"<div.*?07519a>(.*?)</font>.*?")
                        Result_2 = Result_1.findall(Key_1)
                        print(f"电影名称:{Result_2[0]}")
                       

def func4(fields_1): #输出豆瓣评分

        K_1 = '◎豆瓣评分' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?豆瓣评分 (.*?)<br />.*?")
                        Result_2 = Result_1.findall(Key_1)
                        print(f"豆瓣评分:{Result_2[0]}")
                       
                       
def func5(fields_1): #输出导演

        K_1 = '◎导  演' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?导  演 (.*?)<br />.*?")
                        Result_2 = Result_1.findall(Key_1)
                        print(f"导演:{Result_2[0]}")
                       
                       
def func6(fields_1): #输出主演

        K_1 = '◎主  演' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?主  演 (.*?)<br />.*?")
                        Result_2 = Result_1.findall(Key_1)
                        print(f"主演:{Result_2[0]}")
                       
                       
def func7(fields_1): #输出编剧

        K_1 = '◎编  剧' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?编  剧 (.*?)<br />◎.*?")
                        Result_2 = Result_1.findall(Key_1)
                       
                        a = Result_2[0].split("<br />    &nbsp;&nbsp; ")[0]
                        b = Result_2[0].split("<br />    &nbsp;&nbsp; ")[1]
                        Result_3 = f"{a} / {b}"
                        print(f"编剧:{Result_3}")
                       
                       
def func8(fields_1): #输出简介

        K_1 = '◎简  介' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
                        Result_1 = re.compile(u".*?◎简  介<br /><br />  (.*?)<br />.*?")
                        Result_2 = Result_1.findall(Key_1)
                        Result_3 = Result_2[0].replace('&ldquo;','"')
                        Result_3 = Result_3.replace('&rdquo;','"')
                        print(f"简介:{Result_3}")
                       

if __name__ == '__main__':

        func1()


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
电影名称:2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字
豆瓣评分:8.8/10 from 1607  users
导演:大友启史 Keishi Ohtomo
主演:佐藤健 Takeru Satoh
编剧:和月伸宏 Nobuhiro  Watsuki / 大友启史 Keishi Ohtomo
简介:幕府末期,日本陷入动荡。绯村剑心因剑术高超,被冠以"刽子手拔刀斋"之名,效力于长州藩倒幕部队首领桂小五郎的手下。一天,剑心救下一位名为雪代巴的年轻女子,却被其目睹了杀人行径,他只好将她带到长州藩众人的落脚处。不久后,长州藩武士因池田屋事件引兵上京,随后于禁门之变中战败。剑心与巴以夫妻名义隐居乡间,他第一次感受到了内心的安定。然而,巴的突然失踪打破了这份平静,剑心脸上的十字伤之谜也终于被揭开。

C:\Users\jacky\Desktop>





######

例子七:
使用命令wget,通过链接地址下载图片:

连接公网安装第三方库(wget):
C:\Users\jacky\Desktop>pip3 install wget -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com


脚本内容:
#coding=utf-8
import wget

URL_1 = 'https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg' #远程图片文件的链接地址

Path_1 = 'd:/' #本地文件夹;即D盘根目录

try:
        wget.download(URL_1,Path_1)

except Exception as e:
        print(f"远程文件 {URL_1} 下载失败,原因: {e}")
  
else:
        print(f"远程文件 {URL_1} 下载成功。")


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
100% [........................................................] 331171 / 331171
远程文件 https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg 下载成功。


下载下来的文件:
图片1.png
2022-5-30 12:56






######

例子八:
下载电影《浪客剑心最终章追忆篇》内容里的所有图片:

笺注:
网页内容里的图片链接地址格式,如下:
<img border="0" src="https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg"


脚本内容:
#coding=utf-8
import requests
import re

import wget

def func1(): #获取电影《浪客剑心最终章追忆篇》的网页源代码和内容
        url = 'https://www.ygdy8.com/html/gndy/dyzz/20210801/61694.html'

        response = requests.get(url=url)
        response.encoding = 'gbk'
        Key_1 = response.text

        Path_1 = "./3.txt"

        f_name = open(Path_1,'w',encoding='utf-8') #写入(覆盖)文件内容
        Result_1 = f_name.write(Key_1)
        f_name.close()
       
        func2()


def func2(): #从文件中读取数据,再对数据进行筛选
       
        Path_1 = "./3.txt"
        f_name = open(Path_1,'r',encoding='utf-8')

        fields_1 = f_name.readlines() #输出结果为列表,包含换行符
        f_name.close()


        K_1 = '<img border="0" src=' #关键字   

        for Key_1 in fields_1:
                if K_1 in Key_1:
               
                        Result_1 = re.compile(u'.*?<img border="0" src="(.*?)".*?')
                        Result_2 = Result_1.findall(Key_1)
                       
                        func_download(Result_2[0])
       
       
def func_download(URL_1): #批量下载文件
       
        Path_1 = f"d:/share/" #本地文件夹;即D:\share

        wget.download(URL_1,Path_1)
       
        print(f"远程图片 {URL_1} 下载成功。")
       

if __name__ == '__main__':

        func1()


脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
100% [........................................................] 331171 / 331171
远程图片 https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg 下载成功。

C:\Users\jacky\Desktop>


下载下来的文件:(电影《浪客剑心最终章追忆篇》内容里的只有一张图片)
图片2.png
2022-5-30 12:57






相关文章:
正则表达式
网络爬虫_爬(blog.zhuohua.store)
网络爬虫_爬(word.zhuohua.store)

自定义函数
split()函数
replace()函数

CentOS8安装Flask+Apache2.4反向代理

返回列表