80行代码爬尽各种风格美女图片

 主要通过BeatifulSoup来实现爬取。定位各级目录,然后做路径拼接。

# -*- coding: utf-8 -*-

import requests
import time
from bs4 import BeautifulSoup
import os

parent_url = r'https://www.umei.cc/'

resp = requests.get(parent_url)
resp.encoding = 'utf-8'

soup_ = BeautifulSoup(resp.text, 'html.parser')

column_list = soup_.find_all('a', class_="nav-li-item")
sub_column_list = soup_.find_all('div', class_="sonnav")


for i in range(len(column_list)):
    column_name = column_list[i]
    url = column_name.get('href')
    name = column_name.string

name_list = []
for i in range(len(sub_column_list)):
    sub_list = []
    sub_column_names = sub_column_list[i]
    sub_column_li = sub_column_names.find_all('a')
    for j in range(len(sub_column_li)):
        sub_column_name = sub_column_li[j]
        name = sub_column_name.string
        href = sub_column_name.get('href')[1:]
        dic = {}
        dic[name] = href
        sub_list.append(dic)

    name_list.append(sub_list)
msg_li = name_list[4]
for i in range(len(msg_li)):
    name = list(msg_li[i].keys())[0]
    if not os.path.exists('./img/' + name):
        os.mkdir('./img/' + name)

    sub_url = parent_url + msg_li[i][name]
    print(sub_url)

    sub_resp = requests.get(sub_url)
    sub_resp.encoding = 'utf-8'
    sub_soup_ = BeautifulSoup(sub_resp.text, 'html.parser')
    div = sub_soup_.find_all('div', class_='item masonry_brick')
    for ele in div:
        a = ele.find('a')
        href = a.get('href')[1:]
        sub2_url = parent_url + href
        sub2_resp = requests.get(sub2_url)
        sub2_resp.encoding = 'utg-8'
        sub2_soup_ = BeautifulSoup(sub2_resp.text, 'html.parser')
        sub2_div = sub2_soup_.find_all('div', class_='pages')[0]
        sub2_a = sub2_div.find_all('a', text='尾页')[0]
        final_href = sub2_a.get('href')
        pages = final_href.split(".")[0].split('_')[-1]
        for j in range(2, int(pages)+1):
            img_web_url = sub2_url[:-4] + '_' + str(j) + '.htm'
            img_resp = requests.get(img_web_url)
            img_resp.encoding = 'utf-8'
            img_soup = BeautifulSoup(img_resp.text, 'html.parser')
            img_div = img_soup.find('div', class_='big-pic')
            img = img_div.find('img')
            img_url = img.get('src')
            img_name = img_url.split('.')[-2].split('/')[-1]
            final_img = requests.get(img_url)

            with open('./img/' + name + '/'+ img_name + '.jpg', 'wb') as f:
                f.write(final_img.content)
            print('图片%s下载完成' % img_name)

 

介绍 美图网站千千万,美图自己说了算!本源码由@香谢枫林开发,首页图片做了浏览器窗口自适应,最大化占满PC浏览器和移动浏览器的窗口,并且防止出现滚动条。 源码截图 功能介绍 首页图片设置了4个点击功能区,分别是:上一张、下一张、全部随机、套图集随机(为了丰富移动端操作) 搜索功能注释隐藏了,想用的同学自己打开发开者模式解除注释即可 随机按钮:仅在右上角下拉菜单选中的图集中随机 随机All按钮:全部图片中随机 自动随机:仅在右上角下拉菜单选中的图集中自动随机(间隔1.5s) 自动随机All:全部图片中自动随机(间隔1.5s) 自动浏览:自动下一张(间隔1.5s) 套图1:点击跳转新窗口,查看套图所有图片(观赏模式一) 套图2:点击跳转新窗口,查看套图所有图片(观赏模式二) 索引:点击跳转新窗口,查看套图集 收藏:收藏图片,点击”Count“也能收藏 收藏列表:点击跳转新窗口,观赏收藏图片 #注:键盘任意键或者点击图片即可解除自动浏览状态; 按键介绍 @上一张:<–(左方向键) @下一张:–>(右方向键) @全部图集随机:(上方向键 或 alt键) @所选图集随机:(下方向键或shift键) @跳转套图第一张:(空格键) @收藏:(?问号键) @浏览整套图片(模式1):({左大括号) @浏览整套图片(模式2):(}右大括号) @关闭标签页(针对跳转的页面):(\顿号) @自动浏览(随机全部图集1.5s间隔):(”冒号键) @自动浏览(随机所选图集1.5s间隔):(;分号键) @回看随机历史:(《左书名号键) @自动浏览(下一张1.5s间隔):(》右书名号键) #注:任意键结束自动浏览状态;”{}”这两个按键在套图浏览页面可以切换浏览模式 使用说明 第一步:本地建库,把数据库下载到本地(线上数据库连接参数在global.php文件里)也可以自己创建数据库,需要3个基础表,分别是pc_dic_lanvshen、pc_dic_toxic、po_toxic(在数据库文件夹下) 第二步:修改数据库配置,global.php文件的database配置,设置成连接自己本地的数据库;到此,启动网站,你可以愉快的赏图了! 1.想改按键怎么办?在js/index.js文件中,有具体的按键对应功能说明,想改按键,只需要修改对应的键值即可(keyCode键值问度娘吧) 2.搜过功能有木有?在index.php文件中,取消注释id为tb和tj的两代码即可显示搜索功能 说明 我做了3个美图网站的数据取功能,分别对应3个文件:lanvshen.py,lanvshen_qtw.py,lanvshen_mtll.py(顶部有注释对应哪个网站) 第一步:修改数据库配置文件conf/mysql_db.py,修改数据库连接,改成自己本地的数据库; 第二步:找到自己想要取的页面,修改主函数信息即可,只需要修改4个参数,如下图所示 注:Python记得下载好对应的插件(requests,re,time,random,BeautifulSoup)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资料加载中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值