fytfytf 发表于 2020-7-5 09:39:16

新手爬虫妹子图

本帖最后由 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)
            else:
                response=url_open(''.join((img_dict,'_',str(page),'.html')))

            if response=='error':#用来检测有没有下一页,不知道怎么查总页数,只能用这种土办法{:10_277:}
                break
            
            soup=BS(response,'lxml')
            img_url=soup.select('.main-image img')['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=''.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)

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

抓到的结果




小甲鱼的铁粉 发表于 2020-7-5 09:40:54

小污龟{:10_334:}
页: [1]
查看完整版本: 新手爬虫妹子图