【python 3.6】从网站抓图并存放到本地路径

news/2024/5/20 14:51:46/文章来源:https://blog.csdn.net/weixin_30550081/article/details/96586152

 

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-
_author_ = 'BH8ANK'import urllib.request
import re
import os
import time#os.rmdir("D:/images")#1,打开页面,读取图片张数,抓html
wangzhi = "https://www.zhihu.com/question/43551423"
keywords = ".jpg"def get_html(url):page = urllib.request.urlopen(url)html = page.read()return htmlcontent = str(get_html(wangzhi))
a = content.count(keywords)#print(content)
#print("此页面有%d张图" %a)#2,匹配图片文件,抓jpg
def get_image(html):t = r'src="(.+?\.jpg)"' #正则表达式,匹配的是r后面的内容,这部分内容来自于网页的htmlimg = re.compile(t)#将正则表达式翻译成它的对象html1 = html.decode('utf-8')# html用decode('utf-8')进行解码,由bytes变成string。# py3的urlopen返回的不是string是bytes,如果没有这一步,就会报下面的错#    return _compile(pattern, flags).findall(string)#TypeError: cannot use a string pattern on a bytes-like object
img_list = re.findall(img,html1)#在html中找到所有符合正则表达式的图片,存入列表list# try:                           #要么用异常处理方式,要么用if not判断路径是否存在#     os.mkdir("D:/images")# except FileExistsError:#     passif not os.path.exists("D:/images"):#不存在即创建os.mkdir("D:/images")print("\n\nCreat Success\n")# input()n = 1                              #此处要重点理解的是循环变量n,这个n一边控制循环,一边给抓到的图命名for html in img_list:urllib.request.urlretrieve(html, 'D:/images/%s.jpg' %n)print("抓到第%3d张图"  %n,end="") #如果写为%03d,则不满3位,前面加0,如果写为%3d,则右对齐,前面不加0'''上面print中用到了end='',表示后面的打印不换行下面的模块负责显示抓到第几张图片时,打印进度条'''N=0.05#每隔0.05秒打印一个=k=1#循环控制变量,一共打印20个=,最后打印Donewhile k < 20:print("=", end='', flush=True)time.sleep(N)k += 1print("Done")n += 1print("\n一共抓到%d张图"   %(n - 1))return img_list# for img_url in img_list:#     urllib.urlretrieve(img_url, 'D:/tmp/%s.jpg' % n)#     return img_list
# c = get_image(get_html(wangzhi))
# d = c.decode('utf-8')
#
# print(d)if __name__ == "__main__":daima = get_html(wangzhi)print(daima)#此为目标网页的html代码
# input()get_image(daima)#从html中取出匹配的图片,并存放

 

 

 

 

 

 

代码部分本身比较简单,重点需要理解的部分是re.compile和re.findall.

容易出错的地方:

1,下面两行,为什么要decode呢

    html1 = html.decode('utf-8')img_list = re.findall(img,html1)

如果不decode,就会报错

原因是:

TypeError: can't use a string pattern on a bytes-like object.

html用decode('utf-8')进行解码,由bytes变成string。

py3的urlopen返回的不是string是bytes,这一点和py2有差异。

 

 

2,下面这句的意思是筛选 【src="(.+?\.jpg)"】,这部分内容是通过查看网页html来确定的

  t = r'src="(.+?\.jpg)"' 

 

3,创建文件夹时,需要判断当前路径下,是否有这个文件夹,可以采用两种方式,if not 或者try except

 

转载于:https://www.cnblogs.com/BH8ANK/p/8940562.html

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

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

相关文章

如何把不同尺寸ico格式图标_网站ico 图标不会做?用这个小工具轻松搞定

给自己的网站加上一个小图标&#xff0c;显示既专业又美观。网站左上角显示的小图标一般是ico格式的图片&#xff0c;然后在HTML里使用代码去设置ico小图片为该网站的小标。设计软件设计出来的图标一般是png、jpg这等格式的&#xff0c;但ico图标不同于png、jpg这类常见的图片格…

seo日常工作表_谷歌SEO优化工具大全

在做谷歌SEO工作的时候&#xff0c;我们经常性会强调SEO是一个细节性很强的工作&#xff0c;因此&#xff0c;有的时候我们不能进行批量自动化的工作&#xff0c;比如&#xff1a;①外链自动群发②内容批量伪原创在某种情况下&#xff0c;我们认为这是一种相对情况&#xff0c;…

发布原型html文件_Axure教程:高效访问的原型托管网站(1)

由于Axure自带的服务器 Axshare部署在海外的&#xff0c;导致国内的小伙伴在访问上传的项目原型链接时很慢&#xff0c;有时甚至打不开。接下来&#xff0c;推荐给大家几个国内的原型托管网站。第一个&#xff1a;axhub1、平台链接&#xff1a;https://axhub.imaxhub是一个原型…

企业域名备案流程_个人和企业网站申请公安备案的流程总结

我们常给网站备案是在工信部备案&#xff0c;但现在又多一个备案是在公安的备案&#xff0c;以下耀忠根据近期给客户网站进行公安备案的相关步骤流程简单整理一下&#xff0c;希望对大家有所帮助。1、注册账号。打开全国互联网安全管理服务平台网&#xff1a;www.beian.gov.cn&…

4.Windows Server2012 R2里面部署 MVC 的网站

网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新&#xff1a;http://dnt.dkill.net 添加角色 基本功能 默认即可 装一下iis 选4.5和iis核心 其他的下面继续选 安全肯定全要的&#xff0c;常见HTTP和应用程序开…

网站制作流程

提出需求&#xff0d;> 解决方案 &#xff0d;> 工作交流 &#xff0d;> 确立合同 &#xff0d;> 支付定金 &#xff0d;> 安排设计 &#xff0d;> 确认首页  &#xff0d;> 网站制作 &#xff0d;> 客户验收 &#xff0d;> 网站维护 &#x…

服务器上无法重命名文件夹,linux如何重命名文件和文件夹_网站服务器运行维护...

win10显示网络电缆被拔出怎么办_网站服务器运行维护win10显示网络电缆被拔出的解决方法是&#xff1a;1、打开【设备管理器】&#xff0c;展开【网络适配器】选项&#xff1b;2、打开网卡属性窗口&#xff0c;切换到【电源管理】选项&#xff0c;并取消勾选【允许计算机关闭此设…

网站用户头像剪裁上传完整案例

做为网站前段开发人员来说&#xff0c;用户头像剪裁和上传是一个很常用的功能&#xff0c;一般这个功能涉及到图片的放大&#xff0c;缩小&#xff0c;移动&#xff0c;旋转&#xff0c;和剪裁。下面我们来做一个完整的demo&#xff0c;剪裁后的图片以base64的形式返回&#xf…

Ci分开配置网站前台后台的方法

CodeIgniter 是一个简单快速的PHP MVC框架。EllisLab 的工作人员发布了 CodeIgniter。许多企业尝试体验过所有 PHP MVC 框架之后&#xff0c;CodeIgniter 都成为赢家&#xff0c;主要是由于它为组织提供了足够的自由支持&#xff0c;允许开发人员更迅速地工作。 CI 2.0 多目录&…

使用Selenium爬取网站表格类数据

本文转载自一下网站:Python爬虫(5)&#xff1a;Selenium 爬取东方财富网股票财务报表 https://www.makcyun.top/web_scraping_withpython5.html 需要学习的地方: 1.Selenium的安装,配置 2.Selenium的初步使用(自动翻页) 利用Selenium爬取东方财富网各上市公司历年的财务报表数据…

H5竞价单页网站源码带订单系统

竞价单页一直都是比较火爆的一类源码&#xff0c;很多做产品竞价的朋友几乎都会找这样的源码&#xff0c;因为做搜索引擎的竞价推广&#xff0c;如果人工一一对接的话会很累&#xff0c;而且可能下单量要少得多&#xff0c;但是使用竞价单页就不一样了&#xff0c;很多消费者从…

网站本地优化方法与技巧

网站优化是一个比较复杂的过程&#xff0c;尤其是线上的一些细节优化&#xff0c;有很多学问&#xff0c;但是我们最基础的还是要做好网站的本地优化&#xff0c;今天友软科技就和大家一起分享学习一下网站本地优化的方法与技巧&#xff0c;大家有什么好的想法或者观点&#xf…

如何傻瓜式的创建网站地图

1 登陆: http://www.xml-sitemaps.com/ 网站,该网站可以以XML,ROR,TEXT,HTML四种格式创建地图. 2 填写一些参数,网址到下一步。 3 制作完成&#xff0c;下载所需格式&#xff0c;并保存到网站目录。 4 确认是否能正确浏览该地图。

linux 建站命令,关于linux基础命令的详解

关于linux基础命令的详解发布时间&#xff1a;2020-08-26 11:56:02来源&#xff1a;亿速云阅读&#xff1a;84作者&#xff1a;小新小编给大家分享一下关于linux基础命令的详解&#xff0c;希望大家阅读完这篇文章后大所收获&#xff0c;下面让我们一起去探讨吧&#xff01;lin…

电商网站秒杀倒计时实现

电商网站秒杀倒计时实现 CSS代码实现 <style> #container{ width: 190px; height: 275px; background: #e83632; color: #fff; position: relative; } #container .sk_title{ position: absolute; left:0; top: 42px; width: 100%; text-align: center; font-size: 34px;…

.netcore入门27:使用window服务托管asp.net core网站

环境&#xff1a; window10 x64 企业版Microsoft Visual Studio Enterprise 2019 版本 16.6.4.net core 3.1.302 注&#xff1a; 其实这种方式代码稍微有点侵入性&#xff0c;另外window服务的创建、卸载也有些麻烦&#xff0c;可以参考另外一种方法&#xff1a;《.netcore入门…

网页制作技术革新:《HTML5 网站大观》系列文章导航

《HTML5 网站大观》系列文章自去年7月至今已总共发布了12篇&#xff0c;向大家分享了基于 HTML5 制作的企业网站、个人网站、博客网站、单页网站、作品集网站等等各种类型的优秀 HTML5 网站设计作品&#xff0c;现收集于此&#xff0c;供大家查阅。 作为下一代网页语言&#xf…

Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三

爬虫与反爬虫的修罗场 哪种平台最吸引爬虫爱好者&#xff0c;当然是社区类的&#xff0c;那里容易产生原生态&#xff0c;高质量的数据啊&#xff0c; 你看微博&#xff0c;知乎&#xff0c;豆瓣爬的不亦乐乎。 评论也是产生内容的好地方 生活类点评网站 旅游类点评网站 音乐类…

.net core入门35:在网站中承载多个静态目录资源

环境&#xff1a; window 10vs2019.net core 3.1 场景需求&#xff1a; 在使用asp.net core开发的web服务器中&#xff0c;我们直接使用app.UseStaticFiles()中间件托管wwwroot目录下的资源&#xff0c;那么我们可不可以托管其他目录的文件呢&#xff1f;可不可以托管多个不…

2012年最佳免费网站和移动应用 PSD 界面素材揭晓

眨眼间&#xff0c;2012年又要过去了&#xff0c;长期关注 WDL 的朋友都知道&#xff0c;每到年末&#xff0c;WDL 将发布一系列本年度 Web 开发和设计领域的最佳资源。今天这篇文章与大家一起分享这一年来设计师们分享的最佳免费 PSD 用户界面素材&#xff0c;包含滑块、表单、…