鱼C论坛

 找回密码
 立即注册
查看: 1895|回复: 1

[作品展示] 新手爬虫妹子图

[复制链接]
发表于 2020-7-5 09:39:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 fytfytf 于 2020-7-5 10:04 编辑

import urllib.request as ur
from bs4 import BeautifulSoup as BS
import re
import os

        
def mkdir(dirname):#创建文件夹并转到
    try:
        os.mkdir(dirname)
        os.chdir(dirname)
    except:
        os.chdir(dirname)

def url_open(url):#打开网页
    try:
        head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'}
        req=ur.Request(url,headers=head)
        response=ur.urlopen(req).read()
    except:
        return 'error'#用于表示爬到404
    else:
        return response

def zhuatu(img_dict):#抓取图片
    for i in img_dict:
        mkdir(i)
        page=1
        while 1:
            if page==1:
                response=url_open(img_dict[i])
            else:
                response=url_open(''.join((img_dict[i][0:-5],'_',str(page),'.html')))

            if response=='error':#用来检测有没有下一页,不知道怎么查总页数,只能用这种土办法
                break
            
            soup=BS(response,'lxml')
            img_url=soup.select('.main-image img')[0]['src']
            with open(str(page)+'.jpg','wb') as f:#抓取文件并保存
                img=url_open(img_url)
                f.write(img)
            print('page'+str(page)+' downloaded')#表示一个图片下完
            page+=1
        os.chdir('..') #返回上一级目录,以便创建文件夹
        


def cover(url):#获取封面图片和图片对应的网页地址
    response=url_open(url).decode('utf-8')
    soup=BS(response,'lxml')

    fengmian=soup.select('#pins span a')
    img_dict={}
    for i in fengmian:#把简介和图片对应的地址存到字典
        img_dict[i.text]=''.join(['https://www.youmzi.com',i['href']])

    zhuatu(img_dict)

def start(dirname='youmeizi',url='https://www.youmzi.com',yeshu=1):#程序开始
    mkdir(dirname)
   
    page=1
    for i in range(yeshu):
        if page>1:
            if url=='https://www.youmzi.com':#网址首页比较特殊,所以处理一下
                url=''.join((url,'/page/index_',str(page),'.heml'))
            else:
                url=''.join((url,'index_',str(page),'.html'))
            
        page+=1
        cover(url)




if __name__=='__main__':
    start('youmeizi','https://www.youmzi.com',1)

跟着小甲鱼视频学习抓妹子图,自己也试了一下,小甲鱼30分钟做出来,我做了一天,这就是菜鸟和高手的差距吗  
(ps:find_all能模糊匹配,但只能匹配一个标签,select可以匹配多个标签的属性,但不能模糊匹配,有可以对多个标签的属性进行模糊匹配的方法吗,求解 )

抓到的结果

TIM图片20200704111742.png

TIM图片20200704111742.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-5 09:40:54 | 显示全部楼层
小污龟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表