python爬取网站图片和os模块简介

news/2024/5/9 7:05:13/文章来源:https://blog.csdn.net/qq_34884302/article/details/86517988

嗯,最近帮了一个网友做了下图片下载分类,这里记录下来分享一下:

首先了解下os模块的语法

判断文件是否存在
import os
os.path.exists(test_file.txt)
#Trueos.path.exists(no_exist_file.txt)
#False判断文件夹是否存在
import os
os.path.exists(test_dir)
#Trueos.path.exists(no_exist_dir)
#False其实这种方法还是有个问题,假设你想检查文件“test_data”是否存在,但是当前路径下有个叫“test_data”的文件夹,
这样就可能出现误判。为了避免这样的情况,可以这样:只检查文件import os
os.path.isfile("test-data")*******************************************************使用os.access()方法判断文件是否可进行读写操作。
语法:os.access(path, mode)path为文件路径,mode为操作模式,有这么几种:os.F_OK: 检查文件是否存在;os.R_OK: 检查文件是否可读;os.W_OK: 检查文件是否可以写入;os.X_OK: 检查文件是否可以执行该方法通过判断文件路径是否存在和各种访问模式的权限返回True或者False。import os
if os.access("/file/path/foo.txt", os.F_OK):print "Given file path is exist."if os.access("/file/path/foo.txt", os.R_OK):print "File is accessible to read"if os.access("/file/path/foo.txt", os.W_OK):print "File is accessible to write"if os.access("/file/path/foo.txt", os.X_OK):print "File is accessible to execute"******************************************
pathlib模块在Python3版本中是内建模块,但是在Python2中是需要单独安装三方模块。使用pathlib需要先使用文件路径来创建path对象。此路径可以是文件名或目录路径。检查路径是否存在
path = pathlib.Path("path/file")
path.exist()
检查路径是否是文件
path = pathlib.Path("path/file")
path.is_file()
#原文链接https://www.cnblogs.com/jhao/p/7243043.html

首先看一个固定的类别图片下载:

import urllib.request
import os
import re
url=r'http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1489133995309_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E7%BE%8E%E5%A5%B3'imgPath=r'E:\image_py'
imgHtml=urllib.request.urlopen(url).read().decode('utf-8')
urls=re.findall(r'"objURL":"(.*?)"',imgHtml)if not os.path.isdir(imgPath):os.mkdir(imgPath)index=1
for url in urls:print("下载:",url)#未能正确获得网页 就进行异常处理try:res=urllib.request.urlopen(url)if str(res.status)!='200':print('未下载成功:',url)continueexcept Exception as e:print('未下载成功:',url)filename=os.path.join(imgPath,str(index)+'.jpg')with open(filename,'wb') as f:f.write(res.read())print('下载完成\n')index+=1
print("下载结束,一共下载了 %s 张图片"% (index-1))

上面是针对网站的一个类别的下载,下面是针对多个类别的下载:

import requests
from lxml import etree
import os
import urllib.requesturl = "http://www.ivsky.com/tupian/ziranfengguang/"
response=requests.get(url)
root=etree.HTML(response.content)
x_url=root.xpath("//ul[@class='tpmenu']/li")
for mu_url in x_url:m_url=mu_url.xpath("a/@href")[0]m_url="http://www.ivsky.com"+m_urlm_alt=mu_url.xpath("a/text()")[0]print(m_alt)os.mkdir(f"E:/python练习/爬取文件/分类存储/{m_alt}")# print(m_url)response=requests.get(m_url)root=etree.HTML(response.content)xiao_url=root.xpath("//div[@class='left']/div[@class='sline']/div/a")for x_url in xiao_url:big_name=x_url.xpath("text()")[0]os.mkdir(f"E:/python练习/爬取文件/分类存储/{m_alt}/{big_name}")big_href=x_url.xpath("@href")[0]bigx_href="http://www.ivsky.com"+big_hrefprint('一级分类'+big_name)# print(bigx_href)for x in range(1,4):bigs_href="http://www.ivsky.com"+big_href+"index_%s.html"%x# print(bigs_href)big_response=requests.get(bigs_href)big_root=etree.HTML(big_response.content)mubiao_jpg=big_root.xpath("//li/div[@class='il_img']/a")i=0for m_jpg in mubiao_jpg:i += 1m_src=m_jpg.xpath("img/@src")[0]m_name=m_jpg.xpath("img/@alt")[0]print(m_src,m_name,i)test_dir=f'E:/python练习/爬取文件/分类存储/{m_alt}/{big_name}/{m_name}'print(test_dir)if (os.path.exists(test_dir)):print('文件存在')else:os.mkdir(test_dir)print('文件创建')try:res=urllib.request.urlopen(m_src)if str(res.status)!='200':print('未下载成功:',m_src)continueexcept Exception as e:print('未下载成功:',m_src)filename=os.path.join(test_dir,str(i)+'.jpg')with open(filename,'wb') as f:f.write(res.read())print('下载完成\n')

这里会遇到lxml缺失的问题,这里转载下别人的处理方式:python 安装lxml 问题与办法

无论是使用爬虫框架scrapy,还是简单的requests请求后解析。都不可避免的需要使用html解析库。

当然正则是可以代替一部分搜索。由于正则语法的晦涩,及其其他场景下,html解析是必不可少的。

网上推荐 lxml的比较多,优点:稳定,高效

但是lxml的安装很难一次成功

pip install lxml 
如果没报错,那真是烧高香。。。
原文:https://blog.csdn.net/sinat_21302587/article/details/61935447 

解决python “No module named pip”

python 升级后导致不能使用原来的pip命令

windows平台

cmd中敲命令:python -m ensurepip

得到pip的setuptools

然后就可以用:easy_install pip

下载相应版本的pip,最后就可以愉快的用pip命令了!

 

 

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

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

相关文章

一元建站-基于函数计算 + wordpress 构建 serverless 网站

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相…

link rel=alternate网站换肤功能最佳实现

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p8512 本文可全文转载,个人网站无需授权,只要保留原作者、出处以及文中链接即可,任何网站均可摘要聚合,商用请联系授权。 一、大多数开发人员的实现 大多数前端开发…

nodejs 网站架构

有兴趣的可以下载

_004_EclipseOperation_Eclipse将一段代码抽取封装

来自https://www.jb51.net/softjc/581893.html,感谢作者的无私分享。 1、使用Eclipse打开已有的项目代码或者新建一个测试项目代码。将需要抽取封装方法的代码块选中,右击选择Refactor,再选择Extract Method,快捷键(A…

_006_EclipseOperation_创建eclipse新的workspace并设置workspace共享配置

声明:该博文引自http://www.cnblogs.com/whycxb/p/4848695.html 一:创建新的workspace 1、File——Switch Workspace——Other 2、修改workspace路径和名称 3、修改后如下: 4、点击OK按钮后,eclipse自动重启 同时,相…

记一次小网站渗透过程

一、序言 记录某一次无意点开的一个小网站的渗透过程,幸运的是搭建平台是phpstudy,cms是beecms,beecms有通用漏洞,然后去网上找了资料,成功getshell并获取服务器权限。 二、渗透过程 无意点开一个网站,发…

_031_EclipseOperation_Eclipse修改导航栏的颜色

以上是个人随性配置,某些项的设置不懂,结果如下:

网站跨站点单点登录

昨天和几位朋友探讨到了这个话题,发现虽然单点登录,或者叫做独立的passport登录虽然已经有了很多实现方法,但是能真正了解并实现的人却并不太多,所以些下此文,希望从原理到实现,能让大家了解的多一些 至于什…

如何添加网站的浏览器 ico 图标

什么是网站 ICO 图标? 打开微软、百度等网站后看到浏览器的标题栏、地址栏,多浏览器的标签上都显示了一个小图标,如 ,这里说的就是这个东东。 如何制作 ICO 图标? 这里使用最简单的办法。因为 ico 格式图片比较特殊&a…

一键SSH宝塔/Shell原生安装LNMP(Centos7.5 + Nginx + MySQL +PHP)+thinkphp/Wordpress搭建网站(附源码)

可以使用宝塔工具搭建,也可以使用我下面的教程进行搭建。 一、宝塔工具搭建具体操作: ssh登录centos服务器,下载安装宝塔工具centos版本,一键安装LNMP环境。大概需要10-20分钟吧;安装完成后进入应用市场,选…

怎么做好企业网站关键词优化

一、关键词的选择 1、企业品牌词 品牌关键词非常重要,可以说如果不重视品牌词部署,会影响到网络营销效果。品牌关键词是一个网站的名称,具备唯一性,方便用户记忆。加上消费者对品牌的认知度是非常高,具备品牌的网站能…

【网站推荐】Event Registry‘s News

【网站推荐】Event Registrys News 公众号: ChallengeHub 1、简介 利用AI的力量将新闻内容转化为解释性的分析报告。Event Registry是世界领先的新闻情报平台,使组织能够跟踪世界事件并分析其影响。 Event Registrys News 官方网站:https:/…

在线教育专业建站工具 EduWind ,源码下载,源码分享网整理

在线教育专业建站工具 EduWind ,源码下载, Eduwind是由北京水木信步网络科技有限公司开发的网校服务,公司位于清华科技园。目前,EduWind的产品系列包括以下两大版本: EduWind网校开源软件; EduWind网校Saa…

web php+mysql 网站优化方向

1.PHPMySql的存储缺点 在大部分的PHP的网站开发当中,我们往往采用的数据存储方式是phpmysql,因此就会产生如下图所示的请求方式: 以上的架构对一般对于访问量不大的网站没有任何问题,例如:个人博客网站,小公司的企业网…

谷歌浏览器“无法添加来自此网站的应用、扩展程序和应用脚本”的最简单办法

网上其他的办法都试了 有点坑 最简单的解决办法就是打开开发者模式 关了再开,再拖入crx就好了 具体位置:选项——更多工具——拓展程序 或者直接在浏览器里输入chrome://extensions/

大型网站的可伸缩性架构如何设计?

1. 网站架构的伸缩性设计 1.1. 不同功能进行物理分离实现伸缩 纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。 横向分离(业务分割后分离):将不同的业务模块分离…

千万级用户的大型网站,应该如何设计其高并发架构?

目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读…

react+redux+ant+axios+iframe实现网站门户

一个框架壳子,技术栈reactreduxantaxiosiframe,实现侧边栏与导航栏还有头部,对打开的页签进行缓存,使用iframe与各个子系统页面相连。 对打开的页签进行缓存即使刷新页面的tag也不会丢失,界面如下: 这个实现的功能是侧…

某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。

http://www.mianwww.com/html/2012/11/17432.html PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。 存储结构 首先,我们用一张用户积分表user_score来…

linux服务器做301跳转,网站seo怎么实现301跳转,linux服务器设置301重定向方法!

原标题:网站seo怎么实现301跳转,linux服务器设置301重定向方法! 在SEO优化中,这些已经存在可能已被收录的页面链接,既不能贸然的删除又不能放任不管,由于这跟网站的权重是挂钩的,以是这个时辰301定向就派上用场了。301…