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



先附上所有的源代码:
# -*- 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脚本爬取网站美女照片的更多相关文章
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- python 实现爬取网站下所有URL
python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...
- Python:爬取网站图片并保存至本地
Python:爬取网页图片并保存至本地 python3爬取网页中的图片到本地的过程如下: 1.爬取网页 2.获取图片地址 3.爬取图片内容并保存到本地 实例:爬取百度贴吧首页图片. 代码如下: imp ...
- 用Python定时爬取网站最新资源
记录一下. 写做个网站,爬了另一个网站的内容来做自己网站的内容. 把脚本挂到服务器,每隔一个小时去爬一次资源,然后保存到一个HTML文件里. 用flask做web对接,当有请求的时候就返回那个HTML ...
- 教你用python爬取网站美女图(附代码及教程)
我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...
- 【Python】爬取网站图片
import requests import bs4 import urllib.request import urllib import os hdr = {'User-Agent': 'Mozil ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
- 利用linux curl爬取网站数据
看到一个看球网站的以下截图红色框数据,想爬取下来,通常爬取网站数据一般都会从java或者python爬取,但本人这两个都不会,只会shell脚本,于是硬着头皮试一下用shell爬取,方法很笨重,但旨在 ...
- 使用scrapy爬取网站的商品数据
目标是爬取网站http://www.muyingzhijia.com/上全部的商品数据信息,包括商品的一级类别,二级类别,商品title,品牌,价格. 搜索了一下,python的scrapy是一个不错 ...
随机推荐
- 八. SpringCloud消息总线
1. 消息总线概述 1.1 分布式配置的动态刷新问题 Linux运维修改Github上的配置文件内容做调整 刷新3344,发现ConfigServer配置中心立刻响应 刷新3355,发现ConfigC ...
- HTML基础速览
HTML概述 HTML ,CSS , JavaScript, JQuery, Vue 的关系 HTML可以写一个简单的前端,但是很丑,所以需要CSS对HTML进行美化 HTML是静态的.JavaScr ...
- C# 应用 - 封装类访问 Mysql 数据库
个人经历的项目主要都是用 Postgresql 或 Oracle 数据库,本文非原创,从他处整理而来. 1. 库类 mysql.data.dll using MySql.Data.MySqlClien ...
- Python字典与集合
一 字典创建.访问.添加.删除.修改.内建函数.内建方法 创建,列表不能作为键,因为键不能变?字典也不能作为键 dict1 = {} dict2 = {'name':'qq','sex':'male' ...
- 从零学脚手架(八)---webpack-dev-server源码分析
上一篇中介绍了webpack-dev-server属性配置 这一篇就简单的梳理下webpack-dev-server内部实现. 由于涉及到源码解析,所以会涉及到一些比较难啃的知识,我会尽量进行简单化描 ...
- MVC中"删除"按钮无法实现
出现原因:MVC视图中定义了空的模板页 解决办法:删除模板页 或 改成定义页面标题都可以
- PTA 单链表分段逆转
6-9 单链表分段逆转 (25 分) 给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转.例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1 ...
- Androi Studio 之 LinearLayout
LinearLayout •常用属性 •注意事项 当 android:orientation="vertical" 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用 a ...
- 第16 章 : 深入理解 etcd:基于原理解析
深入理解 etcd:基于原理解析 本文将主要分享以下三方面的内容: 第一部分,会为大家介绍 etcd 项目发展的整个历程,从诞生至今 etcd 经历的那些重要的时刻: 第二部分,会为大家介绍 etcd ...
- Elasticsearch扩展X-pack实施流程-实施
Elasticsearch扩展X-PACK实施流程 elasticsearch5.2.1安装X-PACK,对ES集群进行监控,报警,安全验证,报告,图形化操作 注意 版本号需要固定,小版本都不能差,要 ...