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

先附上所有的源代码:

# -*- 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. 腾讯云容器服务 TKE 拿下新加坡 MTCS 最高级别安全认证

    近日,腾讯云容器服务 TKE 荣获新加坡 MTCS 最高级安全认证,标志着腾讯云 TKE 在为用户提供可靠.易部署.灵活扩展等基础服务上,已经全面满足了新加坡监管机构以及多个行业客户对服务安全的要求. ...

  2. JAVA多线程与锁机制

    JAVA多线程与锁机制 1 关于Synchronized和lock synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码 ...

  3. golang调用shell命令(实时输出, 终止等)

    背景 是这样的,最近在研究一个定时任务系统的改造,可能有点像jenkins做到的那种吧. 可以输入shell命令,也可以执行py脚本等等,相比之前来说,也要能够及时停止! 但是遇到了这么个问题,gol ...

  4. CNN结构演变总结(三)设计原则

    CNN结构演变总结(一)经典模型 CNN结构演变总结(二)轻量化模型 前言: 前两篇对一些经典模型和轻量化模型关于结构设计方面的一些创新进行了总结,在本文将对前面的一些结构设计的原则,作用进行总结. ...

  5. Cable Protection

    题目大意:求一颗基环树的最小点覆盖. 题解:其实是一道比较板子的树形dp,dp[i][0/1]表示取或者不取i点的最小点.但是首先我们要把基环树断开,然后分别考虑a被覆盖和b被覆盖的情况. dp[i] ...

  6. 攻防世界 reverse crazy

    crazy 百越杯2018 查看main函数: int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v ...

  7. Scientific Internet Access

    下载小飞机 https://github.com/shadowsocksr-backup 寻找ssr https://github.com/Alvin9999/new-pac/wiki/ss%E5%8 ...

  8. Logback简介及配置文件logback.xml详解

    logback简介及配置文件说明 @author:wangyq @date:2021年3月31日 logback简介 ​ Logback是由log4j创始人设计的另一个开源日志组件,官方网站: htt ...

  9. JavaSE(一)

    1.标识符 标识符是由数字,字母,下划线,$ 等进行命名的符号,但是不可以以数字开头: 标识符包含了关键字,变量名,他人定义,自己定义的. 2.关键字 关键字是指有特殊用途的符号.由以下50种构成 3 ...

  10. Kubernetes,kubectl常用命令详解

    kubectl概述 祭出一张图,转载至 kubernetes-handbook/kubectl命令概述 ,可以对命令族有个整体的概念. 环境准备 允许master节点部署pod,使用命令如下: kub ...