卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章30768本站已运行3725

Python 一个壁纸爬虫脚本

闲来无事,想找一些图片当壁纸,但一张一张下又太慢,能用程序完成的,坚决不能手动。
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()
 
卓越飞翔博客
上一篇: Python 龙年祝福邮件多发
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏