网络爬虫_爬(电影天堂)
例子一:保存通过URL(https://m.dytt8.net/index2.htm)获取到的网页源代码和内容:
连接公网安装第三方库([color=Blue]requests[/color]):
C:\Users\jacky\Desktop>pip3 install [color=Blue]requests[/color] -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 = '[color=Blue]gbk[/color]' #有些网站使用gbk,有些网站使用utf-8
Key_1 = response.text
#print(Key_1)
Path_1 = "./1.txt"
f_name = open(Path_1,'[color=DarkRed]w[/color]',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">[color=Blue]最新电影下载</a>[/color]]<a href='/html/gndy/dyzz/20220527/62647.html'>2022年剧情《以青春之名》HD国语中字</a><br/>
·[<a href="/html/gndy/dyzz/index.html">[color=Blue]最新电影下载</a>[/color]]<a href='/html/gndy/dyzz/20220527/62645.html'>2022年爱情喜剧《替身演员》BD中英双字</a><br/>
·[<a href="/html/gndy/dyzz/index.html">[color=Blue]最新电影下载</a>[/color]]<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 = "[color=Blue]最新电影下载</a>[/color]" #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = f"{Key_1.split('[color=DarkRed]html[/color]')[4][2:][:-10]}\n" #以'[color=DarkRed]html[/color]'为分隔符进行分割后,取第五项,然后去掉前面2个字符,再去掉最后10个字符,最后换行
String_1.write(Result_1)
Result_2 = String_1.getvalue()
Result_2 = Result_2[color=DarkRed].rstrip('\n')[/color] #去除结果最后(右边)的一个换行符
print("版块[最新电影下载]下的所有电影名称:")
print(Result_2)
if __name__ == '__main__':
func1()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
版块[最新电影下载]下的所有电影名称:
[color=Purple]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中英双字[/color]
C:\Users\jacky\Desktop>
######
例子三:
从例子一获取的数据中筛选出版块[最新电影下载]下的所有电影名称:
脚本内容:(使用正则表达式)
#coding=utf-8
import [color=Blue]re[/color] #导入正则表达式的模块(内置模块,不用额外安装)
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"[color=Blue].*?html'>[/color](.*?)[color=DarkRed]</a><br/>.*?[/color]")
Result_2 = Result_1.findall(Key_1)
print(Result_2[0])
if __name__ == '__main__':
func1()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
版块[最新电影下载]下的所有电影名称:
[color=Purple]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中英双字
[/color]
C:\Users\jacky\Desktop>
######
例子四:
使用网站 (电影天堂)的搜索框:
笺注:
在搜索框里搜索“浪客剑心”,会得到以下URL:(有些网站的URL里不能直接使用中文)
http://s.ygdy8.com/plus/s01.php?typeid=1&keyword=[color=Blue]%C0%CB%BF%CD%BD%A3%D0%C4[/color]
脚本内容:
#coding=utf-8
import requests
Key_a = "[color=Blue]%C0%CB%BF%CD%BD%A3%D0%C4[/color]"
url = 'http://s.ygdy8.com/plus/s01.php?typeid=1&keyword=' + Key_a
response = requests.get(url=url)
response.encoding = '[color=Blue]gbk[/color]' #有些网站使用gbk,有些网站使用utf-8
Key_1 = response.text
#print(Key_1)
Path_1 = "./2.txt"
f_name = open(Path_1,'[color=DarkRed]w[/color]',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>
######
例子五:
输出从网站 (电影天堂)的搜索框里搜索“浪客剑心”而获得的电影名:
笺注:
从搜索框里搜索“浪客剑心”,而获得的电影名称格式,如下:
[color=Blue]<td width='55%'[/color]><b><a href='/html/gndy/dyzz/20210801/61694.html'>2021年冒险动作《<font color='red'>浪客剑心</font>最终章追忆篇》BD日语中字</a></b></td>
[color=Blue]<td width='55%'[/color]><b><a href='/html/gndy/dyzz/20210620/61549.html'>2021年动作《<font color='red'>浪客剑心</font>最终章人诛篇》BD日语中字</a></b></td>
[color=Blue]<td width='55%'[/color]><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,'[color=DarkRed]w[/color]',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 = "[color=Blue]<td width='55%'[/color]" #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?html'>[/color](.*?)[color=DarkRed]</a></b>.*?[/color]")
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
搜索(浪客剑心)所获得的电影名称:
[color=Purple]2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字
2021年动作《浪客剑心最终章人诛篇》BD日语中字
2012年动作《浪客剑心/神剑闯江湖》720p.BD中英双字幕
2014年动作《浪客剑心:京都大火篇》BD中文字幕
2014年动作《浪客剑心:传说的完结篇》BD中文字幕[/color]
C:\Users\jacky\Desktop>
######
例子六:
获取电影《浪客剑心最终章追忆篇》的相关内容:
笺注:
电影名称的格式,如下:
[color=Blue]<div class="title_all"><h1>[/color]<font color=#07519a>2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字</font></h1></div>
豆瓣评分的格式,如下:
[color=Blue]◎豆瓣评分[/color] 8.8/10 from 1607 users<br />
导演的格式,如下:
[color=Blue]◎导 演[/color] 大友启史 Keishi Ohtomo<br />
主演的格式,如下:
[color=Blue]◎主 演[/color] 佐藤健 Takeru Satoh<br />
编剧的格式,如下:
[color=Blue]◎编 剧[/color] 和月伸宏 Nobuhiro Watsuki<br /> 大友启史 Keishi Ohtomo<br />◎
简介的格式,如下:
[color=Blue]◎简 介[/color]<br /><br /> 幕府末期,日本陷入动荡。绯村剑心因剑术高超,被冠以“刽子手拔刀斋”之名,效力于长州藩倒幕部队首领桂小五郎的手下。一天,剑心救下一位名为雪代巴的年轻女子,却被其目睹了杀人行径,他只好将她带到长州藩众人的落脚处。不久后,长州藩武士因池田屋事件引兵上京,随后于禁门之变中战败。剑心与巴以夫妻名义隐居乡间,他第一次感受到了内心的安定。然而,巴的突然失踪打破了这份平静,剑心脸上的十字伤之谜也终于被揭开。<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,'[color=DarkRed]w[/color]',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 = '[color=Blue]<div class="title_all"><h1>[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue]<div.*?07519a>[/color](.*?)[color=DarkRed]</font>.*?[/color]")
Result_2 = Result_1.findall(Key_1)
print(f"电影名称:{Result_2[0]}")
def func4(fields_1): #输出豆瓣评分
K_1 = '[color=Blue]◎豆瓣评分[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?豆瓣评分 [/color](.*?)[color=DarkRed]<br />.*?[/color]")
Result_2 = Result_1.findall(Key_1)
print(f"豆瓣评分:{Result_2[0]}")
def func5(fields_1): #输出导演
K_1 = '[color=Blue]◎导 演[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?导 演 [/color](.*?)[color=DarkRed]<br />.*?[/color]")
Result_2 = Result_1.findall(Key_1)
print(f"导演:{Result_2[0]}")
def func6(fields_1): #输出主演
K_1 = '[color=Blue]◎主 演[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?主 演[/color] (.*?)[color=DarkRed]<br />.*?[/color]")
Result_2 = Result_1.findall(Key_1)
print(f"主演:{Result_2[0]}")
def func7(fields_1): #输出编剧
K_1 = '[color=Blue]◎编 剧[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?编 剧[/color] (.*?)[color=DarkRed]<br />◎.*?[/color]")
Result_2 = Result_1.findall(Key_1)
a = Result_2[0].split("<br /> ")[0]
b = Result_2[0].split("<br /> ")[1]
Result_3 = f"{a} / {b}"
print(f"编剧:{Result_3}")
def func8(fields_1): #输出简介
K_1 = '◎[color=Blue]简 介[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u"[color=Blue].*?◎简 介<br /><br /> [/color](.*?)[color=DarkRed]<br />.*?[/color]")
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
电影名称:[color=Purple]2021年冒险动作《浪客剑心最终章追忆篇》BD日语中字[/color]
豆瓣评分:[color=Purple]8.8/10 from 1607 users[/color]
导演:[color=Purple]大友启史 Keishi Ohtomo[/color]
主演:[color=Purple]佐藤健 Takeru Satoh[/color]
编剧:[color=Purple]和月伸宏 Nobuhiro Watsuki / 大友启史 Keishi Ohtomo[/color]
简介:[color=Purple]幕府末期,日本陷入动荡。绯村剑心因剑术高超,被冠以"刽子手拔刀斋"之名,效力于长州藩倒幕部队首领桂小五郎的手下。一天,剑心救下一位名为雪代巴的年轻女子,却被其目睹了杀人行径,他只好将她带到长州藩众人的落脚处。不久后,长州藩武士因池田屋事件引兵上京,随后于禁门之变中战败。剑心与巴以夫妻名义隐居乡间,他第一次感受到了内心的安定。然而,巴的突然失踪打破了这份平静,剑心脸上的十字伤之谜也终于被揭开。
[/color]
C:\Users\jacky\Desktop>
######
例子七:
使用命令wget,通过链接地址下载图片:
连接公网安装第三方库([color=Blue]wget[/color]):
C:\Users\jacky\Desktop>pip3 install [color=Blue]wget[/color] -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
远程文件 [color=Purple]https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg[/color] 下载成功。
下载下来的文件:
[attach]19925[/attach]
######
例子八:
下载电影《浪客剑心最终章追忆篇》内容里的所有图片:
笺注:
网页内容里的图片链接地址格式,如下:
[color=Blue]<img border="0" src=[/color]"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,'[color=DarkRed]w[/color]',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 = '[color=Blue]<img border="0" src=[/color]' #关键字
for Key_1 in fields_1:
if K_1 in Key_1:
Result_1 = re.compile(u'[color=Blue].*?<img border="0" src="[/color](.*?)[color=DarkRed]".*?[/color]')
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
远程图片 [color=Purple]https://img9.doubanio.com/view/photo/l_ratio_poster/public/p2641350668.jpg[/color] 下载成功。
C:\Users\jacky\Desktop>
下载下来的文件:(电影《浪客剑心最终章追忆篇》内容里的只有一张图片)
[attach]19926[/attach]
相关文章:
[url=http://blog.zhuohua.store/viewthread.php?tid=367&page=1&extra=#pid444]正则表达式[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=156&page=1&extra=#pid157]网络爬虫_爬(blog.zhuohua.store)[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=357&page=1&extra=#pid434]网络爬虫_爬(word.zhuohua.store)[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=118&extra=page%3D1]自定义函数[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=133&extra=page%3D1]split()函数[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=129&extra=page%3D1]replace()函数[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=510&page=1&extra=#pid938]CentOS8安装Flask+Apache2.4反向代理[/url]
页:
[1]