上次无意之中看到一个网站,里面全是美女的照片,我就心想,哪天有时间了得把这网站的所有美女照片都得爬下来。今天有时间,写了点代码,爬去了网站的所有照片。附上战果!图片实在是太多了,爬半个多小时

先附上所有的源代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 9 17:07:44 2018
@author: 小谢
"""
import requests
from bs4 import BeautifulSoup
import os
import random
import csv
import time
urls=[]
urlls=[]
datas=[]
i=0
def Download(name,url,dirname):
dir=dirname+"//"
path=os.path.join(dir,name)
response=requests.get(url)
try:
with open(path,"wb") as f:
f.write(response.content)
f.close()
global i
i=i+1
except Exception as e:
print(e)
#获取每一个分类的URL和名字
def Geturl():
resp=requests.get("http://www.27270.com/ent/meinvtupian/")
resp.encoding="gbk" #设置网页编码
html=resp.text
soup=BeautifulSoup(html,"html.parser")
divSoup1=soup.find("div",attrs={"id":"NewTagListBox"})
aas=divSoup1.find_all("a")
for a in aas:
tup=(a['href'],a.string)
urls.append(tup) #将主页面的各个分栏的链接和名字加入urls元组中
def GetImages(url,dirname):
print("*"*50)
if os.path.exists(dirname):
pass
else:
os.mkdir(dirname) #创建目录
try:
resp=requests.get(url)
resp.encoding="gbk" #设置网页编码
html=resp.text
soup=BeautifulSoup(html,"html.parser")
divSoup=soup.find("ul",attrs={'class':'w110 oh Tag_list'})
lis=divSoup.find_all("li")
fp=open("meinv.csv","a",newline="")
csv_writer=csv.writer(fp)
for li in lis:
img=li.find("img")
alt=img['alt']
name=alt+".jpg" #图片的名字
src=img['src'] #图片的下载地址
tup=(name,src,dirname)
Download(name,src,dirname)
csv_writer.writerow(tup)
print(tup)
datas.append(tup) #Download(data[0],data[1],dirname)
fp.close()
except Exception as e:
print(e)
def GetUrls():
Geturl() #获取所有分栏的页面
for url in urls:
ur=url[0][:-5] #将每个分栏的url链接去除最后的 .html
for i in range(11):
i+=1
if i==1:
uuu=ur+".html"
a=(uuu,url[1])
urlls.append(a)
else:
uuu=ur+"_"+str(i)+".html"
a=(uuu,url[1])
urlls.append(a)
def main():
GetUrls() #获取所有页面的url
for ur in urlls:
print(ur[0],ur[1])
GetImages(ur[0],ur[1])
time.sleep(3) #没抓取一个页面延时3秒
if __name__=='__main__':
start=time.time()
main()
end=time.time()
print("一共爬去了%s张照片,一共花费了%s的时间"%(str(i),(end-start)))

网站链接:http://www.27270.com/ent/meinvtupian/

爬取网站的第一步,就是先分析网站的结构。我们可以看到,上面这里有分类

我们右键检查元素,发现这些分类都有规律

我们写一个函数获得每个分类的链接和名字,将链接和名字以元组的形式存储在我们的全局变量 urls中

def Geturl():
resp=requests.get("http://www.27270.com/ent/meinvtupian/")
resp.encoding="gbk" #设置网页编码
html=resp.text
soup=BeautifulSoup(html,"html.parser")
divSoup1=soup.find("div",attrs={"id":"NewTagListBox"})
aas=divSoup1.find_all("a")
for a in aas:
tup=(a['href'],a.string)
urls.append(tup) #将主页面的各个分栏的链接和名字加入urls元组中

然后我们开始分析每一个分类的规律了,每一个分类都有很多栏,而每一个栏的url都有规律。

http://www.27270.com/tag/875.html
http://www.27270.com/tag/875_2.html
http://www.27270.com/tag/875_3.html
......

所有我们得构造每一个分类的链接,因为每一个分类的栏目数量不同,所以我们选了最多的14。将每一分类的每一页的每张图片的url加入urlls列表中

def GetUrls():
Geturl() #获取所有分栏的页面
for url in urls:
ur=url[0][:-5] #将每个分栏的url链接去除最后的 .html
for i in range(14):
i+=1
if i==1:
uuu=ur+".html"
a=(uuu,url[1])
urlls.append(a)
else:
uuu=ur+"_"+str(i)+".html"
a=(uuu,url[1])
urlls.append(a)

接下来的函数是获取图片的URL和名字,

def GetImages(url,dirname):
print("*"*50)
if os.path.exists(dirname):
pass
else:
os.mkdir(dirname) #创建目录
try:
resp=requests.get(url)
resp.encoding="gbk" #设置网页编码
html=resp.text
soup=BeautifulSoup(html,"html.parser")
divSoup=soup.find("ul",attrs={'class':'w110 oh Tag_list'})
lis=divSoup.find_all("li")
fp=open("meinv.csv","a",newline="")
csv_writer=csv.writer(fp)
for li in lis:
img=li.find("img")
alt=img['alt']
name=alt+".jpg" #图片的名字
src=img['src'] #图片的下载地址
tup=(name,src,dirname)
Download(name,src,dirname) #下载图片
csv_writer.writerow(tup) #写入文件中
print(tup)
datas.append(tup) #Download(data[0],data[1],dirname)
fp.close()
except Exception as e:
print(e)

最后这个函数是下载图片

def Download(name,url,dirname):
dir=dirname+"//"
path=os.path.join(dir,name)
response=requests.get(url)
try:
with open(path,"wb") as f:
f.write(response.content)
f.close()
global i
i=i+1 #每下载一张图片加1
except Exception as e:
print(e)

Python脚本爬取网站美女照片的更多相关文章

  1. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  2. python 实现爬取网站下所有URL

    python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...

  3. Python:爬取网站图片并保存至本地

    Python:爬取网页图片并保存至本地 python3爬取网页中的图片到本地的过程如下: 1.爬取网页 2.获取图片地址 3.爬取图片内容并保存到本地 实例:爬取百度贴吧首页图片. 代码如下: imp ...

  4. 用Python定时爬取网站最新资源

    记录一下. 写做个网站,爬了另一个网站的内容来做自己网站的内容. 把脚本挂到服务器,每隔一个小时去爬一次资源,然后保存到一个HTML文件里. 用flask做web对接,当有请求的时候就返回那个HTML ...

  5. 教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...

  6. 【Python】爬取网站图片

    import requests import bs4 import urllib.request import urllib import os hdr = {'User-Agent': 'Mozil ...

  7. Python 利用 BeautifulSoup 爬取网站获取新闻流

    0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup:   ...

  8. 利用linux curl爬取网站数据

    看到一个看球网站的以下截图红色框数据,想爬取下来,通常爬取网站数据一般都会从java或者python爬取,但本人这两个都不会,只会shell脚本,于是硬着头皮试一下用shell爬取,方法很笨重,但旨在 ...

  9. 使用scrapy爬取网站的商品数据

    目标是爬取网站http://www.muyingzhijia.com/上全部的商品数据信息,包括商品的一级类别,二级类别,商品title,品牌,价格. 搜索了一下,python的scrapy是一个不错 ...

随机推荐

  1. 因MemoryCache闹了个笑话

    前言 是这么一回事: 我正在苦思一个业务逻辑,捋着我还剩不多的秀发,一时陷入冥想中...... 突然聊天图标一顿猛闪,打开一看,有同事语音: 大概意思是:同事把项目中Redis部分缓存换成Memory ...

  2. 【Arduino学习笔记08】使用串口监视器显示数据

    代码及相关说明: 1 // 示例:读取模拟输入并显示在串口监视器中 2 3 const int ANALOG_IN = 0; 4 int val = 0; 5 6 void setup(){ 7 Se ...

  3. mysql内一些可以布尔盲注的查询语句

              一.left() 首先需要 use security;  这个数据库,然后进入之后再使用查询语句: 此时再使用: select left(database(),1)='s';    ...

  4. 优秀的vue服务端渲染框架

    目前国内优秀的基于vue的ssr框架有minissr,可以在服务端生成html代码,有利于搜索引擎爬取. https://www.wechatmini.com/vue/minissr 使用方法可以参考 ...

  5. [SDOI2009] HH的项链(待续)

    [SDOI2009] HH的项链(待续) 题目大意:对一个由若干个数字(可重复)组成的数列,询问\([l,r]\)中出现的不同的数字数量 考试时(考试时范围小)用的暴力,but,没有考虑数字0的情况, ...

  6. python学习之web中的html基础

     HTML简介及相关标签介绍 首先,我们要了解什么是HTML? HTML被称作超文本标记语言,是一门标记语言,即该语言由各类标记标签组成. 为什么学python要学HTML? 不管学习哪个语言,我们最 ...

  7. flutter简易教程

    跟Java等很多语言不同的是,Dart没有public protected private等关键字,如果某个变量以下划线 _ 开头,代表这个变量在库中是私有的.Dart中变量可以以字母或下划线开头,后 ...

  8. jQuery学习笔记(2) jQuery选择器

     jQuery的选择器完全继承了CSS的风格,利用jQuery选择器,可以非常便捷和快速地找出特定的DOM元素,然后为它们添加相应的行为. 目录 目录 CSS选择器 jQuery选择器 jQuery选 ...

  9. (3)MySQL进阶篇SQL优化(索引)

    1.索引问题 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题.本章节将对MySQL中的索引的分类.存储.使用方法做详细的介绍. 2.索引的存储分类 ...

  10. ch2_8_4求解投骰子游戏问题

    思路:递推.到第n步可以从第0步走n步到第n步,从第1步走n-1步到第n步... ...依次类推,=> f(n)=f(0)+f(1)+...+f(n-1) import java.util.Sc ...