Board logo

标题: 网络爬虫_爬(电影天堂) [打印本页]

作者: admin    时间: 2019-9-26 10:25     标题: 网络爬虫_爬(电影天堂)

例子一: 保存通过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> ###### 例子二: 从例子一获取的数据中筛选出版块[最新电影下载]下的所有电影名称: 笺注: 版块[最新电影下载]下的电影名称格式,如下: ·[最新电影下载]2022年剧情《以青春之名》HD国语中字
·[最新电影下载]2022年爱情喜剧《替身演员》BD中英双字
·[最新电影下载]2021年悬疑惊悚《黑匣子/黑盒线索》BD中字
脚本内容: #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 = "最新电影下载" #关键字 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 = "最新电影下载" #关键字 for Key_1 in fields_1: if K_1 in Key_1: Result_1 = re.compile(u".*?html'>(.*?)
.*?
") 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> ###### 例子五: 输出从网站 (电影天堂)的搜索框里搜索“浪客剑心”而获得的电影名: 笺注: 从搜索框里搜索“浪客剑心”,而获得的电影名称格式,如下: >2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字 >2021年动作《浪客剑心最终章人诛篇》BD日语中字 >2012年动作《浪客剑心/神剑闯江湖》720p.BD中英双字幕 脚本内容: #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 = "" #关键字 for Key_1 in fields_1: if K_1 in Key_1: Result_1 = re.compile(u".*?html'>(.*?).*?") Result_2 = Result_1.findall(Key_1) a = Result_2[0].split("")[0] b = Result_2[0].split("")[1] Result_3 = a + b c = Result_3.split("")[0] d = Result_3.split("")[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> ###### 例子六: 获取电影《浪客剑心最终章追忆篇》的相关内容: 笺注: 电影名称的格式,如下:

2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字

豆瓣评分的格式,如下: ◎豆瓣评分 8.8/10 from 1607 users
导演的格式,如下: ◎导  演 大友启史 Keishi Ohtomo
主演的格式,如下: ◎主  演 佐藤健 Takeru Satoh
编剧的格式,如下: ◎编  剧 和月伸宏 Nobuhiro Watsuki
       大友启史 Keishi Ohtomo
◎ 简介的格式,如下: ◎简  介

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

脚本内容: #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 = '

' #关键字 for Key_1 in fields_1: if K_1 in Key_1: Result_1 = re.compile(u"(.*?).*?") 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".*?豆瓣评分 (.*?)
.*?
") 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".*?导  演 (.*?)
.*?
") 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".*?主  演 (.*?)
.*?
") 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".*?编  剧 (.*?)
◎.*?
") Result_2 = Result_1.findall(Key_1) a = Result_2[0].split("
       ")[0] b = Result_2[0].split("
       ")[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".*?◎简  介

  
(.*?)
.*?
") Result_2 = Result_1.findall(Key_1) Result_3 = Result_2[0].replace('“','"') Result_3 = Result_3.replace('”','"') 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 ###### 例子八: 下载电影《浪客剑心最终章追忆篇》内容里的所有图片: 笺注: 网页内容里的图片链接地址格式,如下: "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 = '' #关键字 for Key_1 in fields_1: if K_1 in Key_1: Result_1 = re.compile(u'.*?".*?') 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 相关文章: 正则表达式 网络爬虫_爬(blog.zhuohua.store) 网络爬虫_爬(word.zhuohua.store) 自定义函数 split()函数 replace()函数 CentOS8安装Flask+Apache2.4反向代理

图片附件: 图片1.png (2022-5-30 12:56, 51.27 KB) / 下载次数 44
http://blog.zhuohua.store/attachment.php?aid=19925&k=dd27d94e4ffbd9832548b257981daa1c&t=1714591598&sid=FkOBql



图片附件: 图片2.png (2022-5-30 12:57, 48.93 KB) / 下载次数 37
http://blog.zhuohua.store/attachment.php?aid=19926&k=2cf6d0a393b5e037e4d67388e65a05e7&t=1714591598&sid=FkOBql






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2