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

先附上所有的源代码:

# -*- 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. 在windows 下查看ip 地址和 在ubundu 下查看IP地址

    在windows 下查看ip 地址和 在ubundu 下查看IP地址 1.在windows 下查看 IP地址:ipconfig 2.在 ubundu 下查看IP地址:ifconfig

  2. 让人头疼的AI bug (随想)

    虽然概念上,人工智能和机器学习不等同.但是本文提及的AI,指的是基于机器学习的AI.   一个软件产品,出了错误叫bug,bug需要修.那一个机器学习的模型,准确率在那摆着呢,大伙心知肚明是有一定的犯 ...

  3. VSCode添加用户代码片段,自定义用户代码片段

    在使用VScode开发中经常会有一些重复使用的代码块,复制粘贴也很麻烦,这时可以在VScode中添加用户代码片段,输入简写即可快捷输入. VScode中添加用户自定义代码片段很简单. 1.在VScod ...

  4. 「NOIP模拟赛」Round 2

    Tag 递推,状压DP,最短路 A. 篮球比赛1 题面 \(Milky\ Way\)的代码 #include <cstdio> const int N = 2000, xzy = 1e9 ...

  5. UI透明欺诈

    判断是否存在的代码:   private static boolean c(Activity paramActivity)   {     List localList = ((ActivityMan ...

  6. Cookie实现记住密码、自动登录

    前端代码 <form id="form" action="xxx" method="post"> <div> < ...

  7. HDU(1420)Prepared for New Acmer(JAVA语言)【快速幂模板】

    思路:快速幂裸题. //注意用long,否则会超范围 Problem Description 集训进行了将近2个礼拜,这段时间以恢复性训练为主,我一直在密切关注大家的训练情况,目前为止,对大家的表现相 ...

  8. PTA 求二叉树的深度

    6-7 求二叉树的深度 (6 分)   本题要求实现一个函数,可返回二叉树的深度. 函数接口定义: int Depth(BiTree T); T是二叉树树根指针,函数Depth返回二叉树的深度,若树为 ...

  9. Vulkan移植GpuImage(二)Harris角点检测与导向滤波

    Harris角点检测 UI还是用的上次扣像的,只有前后置可以用,别的没有效果,只看实现就好. 相应源码 在实现之前,我先重新整理编译glsl的生成工具,如Harris角点检测中间计算过程需要针对rgb ...

  10. 当红开发语言Go,真的是未来的技术主流吗?

    摘要:文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语 ...