大神论坛

找回密码
快速注册
查看: 105 | 回复: 0

[源码] 对彼岸图网壁纸爬虫脚本 附源码

主题

帖子

0

积分

初入江湖

UID
682
积分
0
精华
威望
0 点
违规
大神币
68 枚
注册时间
2023-10-14 10:55
发表于 2023-12-31 16:31
本帖最后由 bant 于 2023-12-31 16:31 编辑

闲来无事,想找一些图片当壁纸,但一张一张下又太慢,能用程序完成的,坚决不能手动。
PS:白嫖,但咱也要尊重网站的维护者。


import requests
from bs4 import BeautifulSoup
import time

my_dict = {
"1": "4Kxinnian",
"2": "4Kdujia",
"3": "4kyouxi",
"4": "4kdongman",
"5": "4kmeinv",
"6": "4kfengjing",
"7": "4kyingshi",
"8": "4kqiche",
"9": "4kdongwu",
"10": "4kbeijing",
"11": "pingban",
"12": "shoujibizhi",
}


def get_spec_pages(bizhi_type):
page_total = 1
for i in range(page_total):
get_single_page(i, bizhi_type)


def get_single_page(page, bizhi_type=""):
try:
page = int(page)
except ValueError:
return False
while True:
if page == 0:
pic_list_url = 'https://pic.netbian.com/{}/index.html'.format(bizhi_type)
else:
pic_list_url = 'https://pic.netbian.com/{}/index_{}.html'.format(bizhi_type, page)
Myheaders = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
#req = requests.session()
pic_list_html = requests.get(pic_list_url, headers = Myheaders)
pic_list_html.encoding = 'gbk'
soup = BeautifulSoup(pic_list_html.text,'lxml')
pic_lists = soup.find('ul',{'class' : 'clearfix'}).find_all('li')

x = 1
for li in pic_lists:
pic_url = 'https://pic.netbian.com/' + li.a.get('href')

pic_html = requests.get(pic_url,headers = Myheaders)
pic_html.encoding = 'gbk'

sp = BeautifulSoup(pic_html.text,'lxml')

pic_download = 'https://pic.netbian.com/' + sp.find('a',{'id' : 'img'}).img.get('src')
#获取返回的字节类型
img = requests.get(pic_download, headers=Myheaders).content
path = str(sp.find('a',{'id' : 'img'}).img.get('title')) + ".jpg"

with open(path, 'wb') as f:
f.write(img)
time.sleep(1)
print("第【{}】页第【{}】张图片下载完成!".format(page+1,x))
x += 1

page += 1
if page == 15:
print('下载结束!')
break

def main():
# 打印带序号的字符串供用户选择
for i, (key, value) in enumerate(my_dict.items(), start=1):
print(f"{key}: {value}")

# 等待用户输入序号
choice = input("请输入要下载的序号:")

# 根据用户输入的序号查找字典中的值并拼接成字符串
if choice.isdigit():
index = int(choice)
selected_key = list(my_dict.keys())[index - 1] # 索引从0开始,所以要减1
selected_value = my_dict[selected_key]
result = f"{selected_key}: {selected_value}"
get_spec_pages(selected_value)
else:
print("无效的序号,请输入一个正整数。")

if __name__ == '__main__':
main()




返回顶部