Python爬虫-萌妹子图片
最近发现一个可以看图的地方,一张张翻有点累,毕竟只有一只手(难道鼠标还能两只手翻?)。能不能下到电脑上看呢,毕竟不用等网速,还可以预览多张,总之很方便,想怎么就怎么,是吧?
刚好这几天在学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学习。
Python爬虫-萌妹子图片的更多相关文章
- Python爬虫下载美女图片(不同网站不同方法)
声明:以下代码,Python版本3.6完美运行 一.思路介绍 不同的图片网站设有不同的反爬虫机制,根据具体网站采取对应的方法 1. 浏览器浏览分析地址变化规律 2. Python测试类获取网页内容,从 ...
- 如何用Python爬虫实现百度图片自动下载?
Github:https://github.com/nnngu/LearningNotes 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或 ...
- Python爬虫之网页图片抓取
一.引入 这段时间一直在学习Python的东西,以前就听说Python爬虫多厉害,正好现在学到这里,跟着小甲鱼的Python视频写了一个爬虫程序,能实现简单的网页图片下载. 二.代码 __author ...
- python爬虫获取百度图片(没有精华,只为娱乐)
python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...
- Python 爬虫之下载图片
from urllib import request import json #---------获取网页源代码-------------- def getHtml(url): response=re ...
- 【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫
所谓图片爬虫,就是从互联网中自动把对方服务器上的图片爬下来的爬虫程序.有些图片是直接在html文件里面,有些是隐藏在JS文件中,在html文件中只需要我们分析源码就能得到如果是隐藏在JS文件中,那么就 ...
- python爬虫 分页获取图片并下载
--刚接触python2天,想高速上手,就写了个爬虫,写完之后,成就感暴增,用起来顺手多了. 1.源代码 #coding=utf-8 import urllib import re class Pag ...
- Python 爬虫学习 网页图片下载
使用正则表达式匹配 # coding:utf-8 import re import urllib def get_content(url): """ Evilxr, &q ...
- python爬虫requests 下载图片
import requests # 这是一个图片的url url = 'http://yun.itheima.com/Upload/Images/20170614/594106ee6ace5.jpg' ...
随机推荐
- 3200 [HNOI2009]有趣的数列
题面 dalao们都说这是一题简单的卡特兰数,画一画就出来了 emmmmm…… 讲讲怎么分解质因数来算组合数 先打个表 void prim(){ ex[]=ex[]=; ;i<=*n;i++){ ...
- python文件操作打开模式 r,w,a,r+,w+,a+ 区别辨析
主要分成三大类: r 和 r+ "读"功能 r 只读 r+ 读写(先读后写) 辨析:对于r,只有读取功能,利用光标的移动,可以选择要读取的内容. 对于r+,同时具有读和写 ...
- SpringBoot_配置文件
Properties配置 SpringBoot中采用了大量的自动化配置,但是对开发者而言,在实际项目中不可避免会有一些需要自己手动配置,承载这些自定义配置的文件就是resources 目录下的appl ...
- shell awk处理过滤100万条数据
背景: 100万条数据.格式如下: ID 地址 1895756546931805 安徽省六安市裕安区固镇镇佛俺村柳树队5758 安徽省蒙城县岳坊镇胡寨村小组小胡寨庄6号 183494167409969 ...
- Maven学习笔记2(坐标和依赖)
1.坐标 Maven坐标为各个构件建立了秩序,任何一个构件都必须明确自己的坐标,一个maven坐标是由一些元素确定的 <groupId>com.alivn.account</grou ...
- python 0228
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. 飞机 内存:临时存储数据. 8g,16g, 高铁 1,成本高. 2,断电即消失. 硬盘:长期存储大量的数据. 1T 512G等等 ...
- golang中数组指针和指针数组的区别
func test(){ x,y := 1, 2 var arr = [...]int{5:2} //数组指针 var pf *[6]int = &arr //指针数组 pfArr := [. ...
- django 如何接收bootstrap-table传送的 ajax数组
今天在用django传递id的时候,使用 alert(ids)以及console.log("id:",ids),都可以看到是把选中的数据的id打印出来的,用console.log可 ...
- 学以致用三十三-----django生命周期
听了讲解django的视频后,受益匪浅,每个知识点老师都会总结整理.学会总结,存为己用. django生命周期弄明白后,对于整个django的框架会有一个清晰的了解.先上图 1.客户端发送请求,在dj ...
- 【转】mysqldump与innobackupex知多少
作者:罗小波 [目录] 1. 先看mysqldump 1.1 mysqldump备份过程解读 1.2 mysqldump备份过程中的关键步骤 1.2.1 FLUSH TABLES和FLUSH TABL ...