人海茫茫
相识真好

python3.7--爬取上万张妹子图-------美女图片--玉米都督

#只用了bs4解析网页
#单线程,速度慢
#么么哒
 
 
import requests
from bs4 import BeautifulSoup
import os
import os.path
import time
import random
import json
 
headers={'Referer':'http://www.mmjpg.com/',"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"}
 
with open('proxies.json','r') as f:           #将代理读取进列表
    proxy_pool = f.readlines()
proxies=json.loads(random.choice(proxy_pool))    #随机选取一个代理
 
def get_text(url,cont = False,proxies=proxies):            #获取网页的text或者content
    r = requests.get(url,headers=headers,proxies=proxies)
    r.encoding = 'utf-8'
    if cont == True:
        h = r.content
    else:
        h = r.text
    return h
  
 
        
def load_one_folder(url):                      #下载单个系列的所有图片
    folder_text = get_text(url)
    folder_soup = BeautifulSoup(folder_text,'lxml')
    dirname = folder_soup.h2.string
    index = url[24:]                        #该系列的id
    print ('正在保存:' + index + ':' +  dirname)
    print ('网址为:' + url)
                                 
    if  not os.path.exists(index + ':' +  dirname):       #文件夹以id+标题的形式命名
        os.mkdir(index + ':' +  dirname)
    else:
        pass
    page_num = folder_soup.find(id='page')
    a =  page_num.find_all('a')
    max=int(a[-2].string)                #该系列下的页面总数
    print ('本系列一共有' + str(max) +'张图')
    for i in range(1,max+1):
        img_url = url + '/'+ str(i)             #构造单张图片的网址
        img_text = get_text(img_url)
        s = BeautifulSoup(img_text,'lxml')
        content =s.find_all(id='content')
        for c in content:
            img = c.find('img')
            src = img['src']           # 高清无码大图地址
            print ('正在保存' + src)
            content = get_text(src,True)   #获取图片二进制文件 
            with open(index + ':' +  dirname + '\\' +src.split('/')[-1],'wb')as f:
                f.write(content)
    print('——'*30)                   #分隔符
 
 
def main(i=1):                        #参数为开始的网址ID,默认为1
    base_url = 'http://www.mmjpg.com/mm/'
    try:
        while True:
            folder_url = base_url + str(i)
            load_one_folder(folder_url)
            i += 1
    except:
        with open('i.txt','w') as f:                 #创建文件夹保存断点处的网址ID
            f.write(str(i))
        print ('本次爬取在' + folder_url + '处中断,中断原因可能为IP被封,现在为您切换Uers-Agent。您也可以手动结束本程序,下次启动时将会从中断处的网址继续爬取。')
        proxies=json.loads(random.choice(proxy_pool))       #随机更换一个代理
        print ('本次使用代理为:' + str(proxies))
        main(i)
 
 
if __name__ == '__main__':
    if 'i.txt' in os.listdir('.'):                #在当前文件夹下寻找i.txt文件,如果有的话,读取里面的值,接着上次发生中断的网址继续爬取
       with open('i.txt','r') as f:
            i = int(f.read())  
            main(i)
    else:                                         #如果没有,那么默认从第一个网址开始
        main()

 

python3.7--爬取上万张妹子图-------美女图片--玉米都督

 

python3.7--爬取上万张妹子图-------美女图片--玉米都督

自动爬取自动生成文件夹以及图片

proxies.json在链接里 ,文件放置位置如下

 

下载proxies.json文件

python3.7--爬取上万张妹子图-------美女图片--玉米都督

所需python库   requests    BeautifulSoup

python版本3.7.1

友情分享  技术驱动,  请勿举报  高产健儿

 

您的每一个喜欢,评论,与关注都是对博主的最大鼓励与支持,

关注博主,可以分享到最新的知识,解决现有的问题~ 蟹蟹你

 

 

赞(0) 打赏
未经允许不得转载:老康的学习空间 » python3.7--爬取上万张妹子图-------美女图片--玉米都督

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏