python如何爬取图片到指定文件夹_抓取某网站一分类下所有的图片(python小白登天日记)...

news/2024/5/12 1:32:39/文章来源:https://blog.csdn.net/weixin_39559015/article/details/110115131

废话先不多说,先上代码:


import requests

from bs4 import BeautifulSoup

import os,re

import sys

reload(sys)

sys.setdefaultencoding('utf8')

url = 'http://www.bfpgf.com/yld'

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = { 'User-Agent' : user_agent }#写一个headers

def get_soup(url):#获取bs4的对象

r = requests.get(url,headers=headers) # 使用requests获取网页,在这添加请求头,应对反爬虫

print r.status_code

soup = BeautifulSoup(r.content, 'html.parser') # 把页面处理成bs的对象,好进行下一步操作

return soup#返回bs4对象

def download_img(url,page_number):

soup = get_soup(url)

img_urls = soup.article.find_all('img')

numerb_of_arr = len(img_urls)#获取当前页面图片的数量

title = soup.find_all('h1',attrs={'class':'article-title'})#获取到标题所在的标签

dir_name = title[0].a.text#设置文件夹的名字

if os.path.isdir(dir_name):#判断当前目录下是否有文件夹存在,不存在的话创建一个与标题名称相同的文件夹

pass

else:

os.mkdir(dir_name)

for index , img_url in enumerate(img_urls):#获取序列号方便写图片的名字

file_name_suffix = re.findall(r'.[^./:*?<>|rn]+$', img_url['src'])[0]#通过正则获取图片的格式

img_index = page_number + index#计算这是第几张图片

img_name = str(img_index) + str(file_name_suffix)#拼接出图片的名称

file_name = os.path.join(dir_name,img_name)

url_download_img = 'http://www.bfpgf.com' + img_url['src']

print '开始下载第' + ' ' + str(img_index+1) + ' ' + '张图片'

req = requests.get(url_download_img,headers=headers)

img = req.content

with open(file_name, 'wb') as f:

f.write(img)

page_number += numerb_of_arr#为了图片名称计算出之前页面有多少图片

if len(soup.find_all('a',attrs={'class':'nextpostslink'}))!=0:

next_url = soup.find_all('a',attrs={'class':'nextpostslink'})[0]['href']#下一页的地址

print next_url

download_img(next_url,page_number)

def get_target_url(url):

soup = get_soup(url)

target_urls = soup.find_all('h2')

for target_url in target_urls:# 在这调用下载图片的方法

print '\n' + '正在抓取' + ' ' + str(target_url.a['title']) + '\n'

download_img(target_url.a['href'],0)

if soup.find('li', attrs={'class': 'next-page'}).a:# 如果有下一页的话

print '\n' + '开始抓取下一页' + '\n'

next_page_url = soup.find('li', attrs={'class': 'next-page'}).a['href']

get_target_url(next_page_url)

else:

print '\n' + '全站抓取完成'

get_target_url(url)

这一次抓的还是一个开车网站,测试了一下还是需要添加headers的。

本来这周想直接上sracpy,然后看了几天关于它的教程,比如 廖雪峰 老师和大神 静觅 的,但是感觉自己没有需求,强行搞一个需求写起来实在不顺心,所以思前想后还是先别用scrapy了吧,虽然我都装好写了一个小小的爬虫了。

上次写的关于lofter想抓全站或者排名前几的摄影社的图片,可是实在搞不懂通用的标识,当然肯定是我太菜了,没有找到,不过没事,这次找到了这个网站

开车是我最喜欢的事儿了,更何况还能用代码飙车,运行程序之后会自动创建文件夹并且下载对应的图片到文件夹里,如图:

9b0fcc961bac?utm_campaign=maleskine

练习用的文件夹

说实话,还有一个问题没有完美解决,就是

如何判断当前文件已经存在,不需再次下载

因为现在实在有点晚,所以这个问题暂时不解决,留着明天看一看。

不过这次结局了上次1024无法下载图片的问题,也是明天我试试,原来下载图片也可以带headers啊,这么说的话requests比urllib好用多了。

为了写多页面的图片下载,我用了两次递归,直到没有下一页,程序就停止运行了。

9b0fcc961bac?utm_campaign=maleskine

9b0fcc961bac?utm_campaign=maleskine

运行中

get_soup(url)这个函数我更是用了两次,虽然没提高多大的效率,不过也是第一次在python里复用~还是挺开心的。

其余没有多大的问题,就是在urllib用urlretrieve下载的时候只能下载一个,然后让大侄子去运行却能全部下载,没办法,只能换了requests的下载并且带上了headers,然后就完美的运行成功了。

最后一句话送给大家

飙车有风险,开车需谨慎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820928.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站三层架构学习之一 分层式结构

去年参加中软的面试&#xff0c;戴老师就说让好好研究一下petshop。可是今年来了以后&#xff0c;老师让做即墨公司的语音项目&#xff0c;一直进行的是windows编程&#xff0c;没有接触网站方面的。现在项目基本做完了&#xff0c;开始ASP.NET的学习了。 现在petshop的最新版本…

网站三层架构学习之二 整体架构

在上一篇中&#xff0c;我只是对微软的三层架构做了一下介绍&#xff0c;以后将主要结合两个项目&#xff1a;一个是ASP.NET网站模板中的个人网站初学者工具包和petshop 4.0. 因为昨天看的是petshop的&#xff0c;今天就主要说说petshop 4.0的整体架构。 根据三层架构&#xff…

18个优秀的在线图片编辑服务网站

说起编辑图片&#xff0c;可能大多数人都会马上想起强大的Photoshop。事实上&#xff0c;除了购买或下载盗版的PS之外&#xff0c;你还可以使用很多优秀在线图片编辑服务&#xff0c;这些网站大多数都是免费的。对于大部分的人来说&#xff0c;它们提供的功能已经足够强大了。在…

.NET开发人员必知的八个网站

当前全球有数百万的开发人员在使用微软的.NET技术。如果你是其中之一&#xff0c;或者想要成为其中之一的话&#xff0c;我下面将要列出的每一个站点都应该是你的最爱&#xff0c;都应该收藏到书签中去。 对于不熟悉.NET技术的朋友&#xff0c;需要说明一下&#xff0c;.NET提…

乐天酷网站用户体验

万众瞩目的电子商务平台--乐天酷上线了&#xff0c;怀着无比崇敬的心情&#xff0c;我浏览了网站的页面。 乐酷天-中国最大搜索引擎百度和日本最大购物网站乐天联手打造的超大型网络购物商城 看着这口号&#xff0c;两个最大产生出这么大的一个网站&#xff0c;整体色调以大红色…

手机网站重构经验分享(S60V3篇)

前言 做WEB重构的同学都应该知道,我们一般需要在一个操作系统 (Windows XP)和4种以上的浏览器(IE678,Firefox,Chrome,Opera等)上测试页面的兼容性。 相对而言,手机上的页面兼容性测试,相当痛苦!手机光操作系统都有S60V3,S60V5,MTK,Android,Windows Mobile等等,每个操作系统上除…

各位觉得哪个电子商务网站上的购物车做得好?

各位觉得哪个电子商务网站上的购物车做得好&#xff1f; 国内或者国外的都行&#xff0c;现在购物车设计感觉越来越同质化了。添加评论 分享 查看全部 2 个回答 段炼&#xff0c;交互设计 知乎用户 赞同 1. 购物车在首页上的界面和交互设计天猫 亚马逊京东淘宝 1号店 布 局…

我也要谈谈大型网站架构之系列(1)——纵观历史演变(上)

我们知道一个网站都是随着业务的发展&#xff0c;逐渐演变成几万服务器&#xff0c;几亿用户数的大型网站&#xff0c;经历了若干年&#xff0c;甚至上十年的 发展成为大型网站&#xff0c;然而真正亲身经历这个发展过程的人已经不多了&#xff0c;这种人也是拿着公司股票&…

网站性能优化-将Script放到HTML文件中尽量靠近尾部原理

在Yahoo的网站性能优化准则里&#xff0c;其中有一条是将Script放在页面底部&#xff0c; Put Scripts at the Bottom tag: javascript The problem caused by scripts is that they block parallel downloads. The HTTP/1.1 specification suggests that browsers download no…

Centos7下修改mysql5.6编码方式 解决网站中文显示问号

解决办法&#xff1a; 修改MySQL数据库字符编码为UTF-8&#xff0c;UTF-8包含全世界所有国家需要用到的字符&#xff0c;是国际编码。 具体操作&#xff1a; 1、进入MySQL控制台 mysql -u root -p 输入密码 查看当前mysql运行状态 mysql>status 后面四个编码是我在修改之后…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉有不少同学都很难明白为什么…

移动电子商务网站建设之概述

题外话 想做这次总结有一段时间了&#xff0c;但是总是这样那样的事情给耽搁。妈妈常说“不怕慢&#xff0c;就怕站”&#xff0c;我决定回来以后一定要把自己在手机当当网一年多以来的积累总结一下。 首先要感谢小白&#xff0c;放手让我处理占手机当当网60%的站点&#xff…

网站的活跃用户与流失用户见解分析

网站用户管理的目标是发掘新用户&#xff0c;保留老用户。但仅仅吸引新用户还不错&#xff0c;还需要保持新用户的活跃度&#xff0c;使其能持久地为网站创造价值&#xff1b;而一旦用户的活跃度下降&#xff0c;很可能用户就会渐渐地远离网站&#xff0c;进而流失。所以基于此…

使用cookie-free domains的方法优化网站性能

YSlow给如何提高网页效率和优化网站性能提供了22条建议&#xff0c;其中有一条是关于域名的&#xff1a;Use cookie-free domains。 使用 cookie-free domains 有什么好处呢&#xff1f;当用户浏览器发送一个静态文件&#xff0c;如图片image、CSS样式表文件时会同时发送同一个…

为何各大网站启用HTTPS?运营商做了“好事”

真的是好事&#xff0c;不加引号的好事。 你可能没有注意到&#xff0c;用百度搜索时&#xff0c;浏览器地址栏里的 http 已经成为永远的过去时&#xff0c;接棒的是更安全的 https。这家中国最大的搜索引擎&#xff0c;于2015年3月份做出了一个重要的决定——全站强制启用 htt…

外贸网站租用香港服务器有哪些好处

外贸网站租用香港服务器有哪些好处 互联网迅猛发展极大地加速经济全球化趋势&#xff0c;贸易、投资自由化己成为当代世界经济发展的潮流&#xff0c;国内外贸企业进军海外市场&#xff0c;由内销转出口已成为企业营销的潮流之举。对中小外贸企业来说&#xff0c;借助香港服务器…

专访 HackerOne COO 王宁:尊重规则是漏洞平台成功的秘诀,欢迎更多成人网站进驻 | 宅客...

本文作者史中&#xff0c;雷锋网主笔。关注网络安全&#xff0c;希望用简单地语言解释科技的一切。 HackerOne是美国著名的漏洞众测公司&#xff0c;它最早开创了一种模式&#xff1a;汇集众多的黑客&#xff0c;一起为企业找漏洞。 目前&#xff0c;全球致命的互联网公司 Yaho…

基于MyEclipse+JSP+Mysql+Tomcat开发得塞北村镇旅游网站设计

塞北村镇旅游网站设计主要用于实现旅游景点信息管理&#xff0c;基本功能包括&#xff1a;主界面模块设计&#xff0c;用户注册模块&#xff0c;旅游景点模块&#xff0c;酒店预订模块&#xff0c;后台管理模块等。本系统结构如下&#xff1a; &#xff08;1&#xff09;主界模…

基于MyEclipse+SSH+Mysql+Tomcat开发得爱宠物网站设计与实现

系统主要分为前台和后台两大模块 前台主要由用户体验使用: 用户登录 注册 查找商品 商品类别等功能导航&#xff1b; 后台主要由系统管理员操作使用 维护系统 管理员主要实现了 订单管理 商品管理 …

基于Eclipse+JSP+SqlServer2000开发得在线音乐试听网站(可二次开发为音乐商城)的设计与实现

在线音乐模块使用说明书 配置源程序 附加数据库SQL Server 2000 &#xff08;1&#xff09;打开SQL Server 2000中的“企业管理器”&#xff0c;然后展开本地服务器&#xff0c;在“数据库”节点上单击鼠标右键&#xff0c;在弹出的快捷菜单中选择“所有任务”/“附加数据库…