爬取元气桌面壁纸 您所在的位置:网站首页 元气桌面白嫖vip 爬取元气桌面壁纸

爬取元气桌面壁纸

2024-01-15 18:31| 来源: 网络整理| 查看: 265

 要想创建一个动态壁纸网站,那么动态壁纸就是灵魂!

目前主流的动态壁纸网站没有几个,今天我分析一下元气桌面网站的动态壁纸:https://bizhi.cheetahfun.com/dn/d/

首先导入包:

import requests import re import MySQLdb

然后分析一下网站:

 通过每个分类的url得知,‘c1d’是风景分类,‘c2d’是动漫分类,其他的分类依次是:‘c3d’,‘c4d’......

防止反爬规则,我们写入:

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' }

命名一个变量:category_dict,里面写入所有的分类:

# 请求URL获取分类 category_dict = { '1': '风景', '2': '动漫', '3': '美女', '6': '动物', '5': '明星', '4': '游戏', '7': '科幻', '10': '小清新', '11': '其他' }

新建for循环:

for page in range(start, end): category_dict1 = f'https://bizhi.cheetahfun.com/dn/c{page1}d/p{page}' + category_dict[category_id] category1 = requests.get(url=category_dict1, headers=headers).text # print(category1) href = re.findall(r'', category1) # print(href)

然后给代码增加输入效果:

start = int(input("开始页数:")) # 这里写要爬取的初始页面 end = int(input("结束页数:")) # 这里写要终止爬取的页面 category_id = input("分类翻页:") # 这里写category_dict中分类对应的数字,如:1,2,3,6...... page1 = int(input("分类:")) # 这里写category_dict中分类对应的数字,如:1,2,3,6......

现在,我们只是获得了该分类页面下的所有视频网页,如:https://bizhi.cheetahfun.com/dn/pd345388.html

新建for循环,目的是为了将每一个动态壁纸的链接提取出来:

for h in href: img = re.findall(r'https://([^"]*)', h[0]) print('https://' + img[0])

新建for循环,为了将每一个动态壁纸的视频与名字提取出来:

for link in list_img: response = requests.get(link, headers=headers).text # print(response) pattern = re.findall(r'', response) name = re.findall(r'', response) # print(name)

接下来,我们新建两个数组:

# 新建数组 list_img = [] list_mp4 = [] # 保存到数组里面 list_img.append('https://' + img[0]) list_mp4.append(name + pattern)

现在所有的视频链接与名字都可以提取出来啦!

需要将内容存储到数据库中:

# 连接到 MySQL 数据库 conn = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='user') # 创建游标 cursor = conn.cursor() # 创建数据表 # 如果要想更改分类,就把数据表修改名字,重新创造一个数据表 try: cursor.execute("CREATE TABLE images (name VARCHAR(255), mp4_url VARCHAR(255))") except: pass for link in list_img: response = requests.get(link, headers=headers).text name = re.findall(r'', response)[0] pattern = re.findall(r'', response)[0] cursor.execute("SELECT * FROM images WHERE name=%s AND mp4_url=%s", (name, pattern)) if cursor.fetchone() is not None: print(f'Skipping duplicate: {name}') else: cursor.execute("INSERT INTO images VALUES (%s, %s)", (name, pattern)) print(f'Saved: {name}') # 提交更改 conn.commit() # 关闭游标和连接 cursor.close() conn.close()

完整代码如下:

import requests import re import MySQLdb # PS:爬取多页运行速度很慢,可以调整一下软件的内存与运行内存 # 连接到 MySQL 数据库 conn = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='user') # 创建游标 cursor = conn.cursor() # 创建数据表 # 如果要想更改分类,就把数据表修改名字,重新创造一个数据表 try: cursor.execute("CREATE TABLE images (name VARCHAR(255), mp4_url VARCHAR(255))") except: pass headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } # 请求URL获取分类 category_dict = { '1': '风景', '2': '动漫', '3': '美女', '6': '动物', '5': '明星', '4': '游戏', '7': '科幻', '10': '小清新', '11': '其他' } start = int(input("开始页数:")) # 这里写要爬取的初始页面 end = int(input("结束页数:")) # 这里写要终止爬取的页面 category_id = input("分类翻页:") # 这里写category_dict中分类对应的数字,如:1,2,3,6...... page1 = int(input("分类:")) # 这里写category_dict中分类对应的数字,如:1,2,3,6...... list_img = [] list_mp4 = [] for page in range(start, end): category_dict1 = f'https://bizhi.cheetahfun.com/dn/c{page1}d/p{page}' + category_dict[category_id] category1 = requests.get(url=category_dict1, headers=headers).text # print(category1) href = re.findall(r'', category1) # print(href) for h in href: img = re.findall(r'https://([^"]*)', h[0]) list_img.append('https://' + img[0]) for link in list_img: response = requests.get(link, headers=headers).text # print(response) pattern = re.findall(r'', response) name = re.findall(r'', response) list_mp4.append(name + pattern) # print(name) for link in list_img: response = requests.get(link, headers=headers).text name = re.findall(r'', response)[0] pattern = re.findall(r'', response)[0] cursor.execute("SELECT * FROM images WHERE name=%s AND mp4_url=%s", (name, pattern)) if cursor.fetchone() is not None: print(f'Skipping duplicate: {name}') else: cursor.execute("INSERT INTO images VALUES (%s, %s)", (name, pattern)) print(f'Saved: {name}') # 提交更改 conn.commit() # 关闭游标和连接 cursor.close() conn.close()

程序的缺点就是爬下来的动态壁纸只有十秒时间!并且运行很慢!!!

PS:4K动态壁纸不要爬!!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有