首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫-萌妹子图片

Python爬虫-萌妹子图片

作者头像
用户6362579
发布2019-09-29 17:27:10
5730
发布2019-09-29 17:27:10
举报
文章被收录于专栏:小神仙小神仙
先来图
先来图

最近发现一个可以看图的地方,一张张翻有点累,毕竟只有一只手(难道鼠标还能两只手翻?)。能不能下到电脑上看呢,毕竟不用等网速,还可以预览多张,总之很方便,想怎么就怎么,是吧?

刚好这几天在学python,刚好拿来试试手。

代码注释很详细就不做解释了。代码比较丑,有建议随便提,反正我也不改。

import requests as re
from bs4 import BeautifulSoup
import os
#import threading

#定义一个爬去图片的类
class Spider:
    # 传入图片地址,文件名,保存单张图片
    def saveImg(self, imageURL, fileName):
        u = re.get(imageURL)
        data = u.content
        f = open(fileName, 'wb')
        f.write(data)
        f.close()

    def saveBrief(self, content, name):
        fileName = name + "/" + name + ".txt"
        f = open(fileName, "w+")
        f.write(content.encode('utf-8'))
    #创建新目录
    def mkdir(self,path):
        path = path.strip()
        # 判断路径是否存在
        # 存在     True
        # 不存在   False
        isExists=os.path.exists(path)
        # 判断结果
        if not isExists:
            # 如果不存在则创建目录
            # 创建目录操作函数
            os.makedirs(path)
            return True
        else:
            # 如果目录存在则不创建,并提示目录已存在
            return False
    #下载每期的图片,并放入以标题为名字的目录中
    def GetDeatilPage(self, url,encodeing="utf-8",folder=""):
        res = re.get(url)
        res.encoding=encodeing
        soup = BeautifulSoup(res.text, "html.parser")
        imgs = soup.select("article.article-content > p > img")#根据元素匹配所有的图片地址
        if(len(imgs)>0):
            #检查目录是否存在,不存在就创建
            if(folder!=""):
                folder=folder+"\\"
            self.mkdir(folder+imgs[0].attrs.get("alt"))#创建目录
            i=1
            for img in imgs:
                imgurl = img.attrs.get("src")#获取图片路径
                self.saveImg(imgurl, img.attrs.get("alt")+"\\"+str(i)+".jpg")#保存图片
                i=i+1
    #获取页面上所有的期数连接
    def GetAllPageUrl(self,url):
        res=re.get(url)
        soup=BeautifulSoup(res.text, "html.parser")
        urls=soup.select("div.excerpts > article.excerpt > a.focus")
        return [a.attrs.get('href') for a in urls]


def loop(i):
    spider=Spider()
    urls=spider.GetAllPageUrl("http://www.52rkl.cn/mengmeizi/list_51_"+str(i)+".html")
    for url in urls:
        spider.GetDeatilPage(url)

for i in range(1,25):
    loop(i)
    # threading.Thread(target=loop,args=(i),).start()
    # threading.Thread(target=loop,args=((i)*3+1),).start()
    # threading.Thread(target=loop,args=((i+1)*3+1,)).start()
    # threading.Thread(target=loop,args=((i+2)*3+1),).start()
    # threading.Thread(target=loop,args=((i+3)*3+1),).start()
    # threading.Thread(target=loop,args=((i+4)*3+1),).start()
    # threading.Thread(target=loop,args=((i+5)*3+1),).start()
    # threading.Thread(target=loop,args=((i+6)*3+1),).start()
print("成功")

本来想实现多线程的,奈何按照网上说的都无效,还是单线程下载。知道怎么实现的还望不吝赐教。

git:https://github.com/dashenxian/ImageSpider

刚开始python学习。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档