python下载指定页面的所有图片
实现步骤:
1.下载页面源码
2.对页面进行解析,获取页面中所有的图片路径
3.下载图片到指定路径
代码实例:
# coding: utf-8
import urllib2 # 该模块用于打开页面地址
import urllib # 用于下载图片(为什么需要同时引进urllib和urllib2,请参考:https://www.cnblogs.com/wly923/archive/2013/05/07/3057122.html)
import re # 用于正则表达式
import urlparse # 将src拼接成一个可以直接访问的图片地址
import os # 用于指定文件的保存地址
from bs4 import BeautifulSoup # 用于将文档转为固定编码文件,便于从网页抓取数据 class Downloader(object):
def html_download(self, url): # 页面源码下载
if url is None:
return
response = urllib2.urlopen(url)
if response.getcode() != 200: # 判断页面是否访问成功
return
html_cont = response.read()
self.html_parse(url, html_cont) def html_parse(self, url, html_cont): # 源码解析,提取需要的数据
img_urls = []
if url is None or html_cont is None:
return
soup = BeautifulSoup(html_cont, 'html.parser', from_encoding='utf-8')
imgs = soup.find_all('img', src=re.compile("/image/2017index/(.*)")) # 根据src得到所有的img标签
for img in imgs:
new_url = img['src'] # 获取所有的链接
new_full_url = urlparse.urljoin(url, new_url) # 让new_url按照page_url的格式拼接成一个完整的url
img_urls.append(new_full_url)
self.img_download(img_urls) def img_download(self, img_urls): # 文件下载保存
if img_urls is None or len(img_urls) == 0:
print 'no img can download'
return cur_path = os.path.abspath(os.curdir) # 获取当前绝对路径
goal_path = cur_path + '\\' + 'imgs' # 想将文件保存的路径
if not os.path.exists(goal_path): # os.path.isfile('test.txt') 判断文件夹/文件是否存在
os.mkdir(goal_path) # 创建文件夹
count = 1 # 用于给图片命名
for img in img_urls:
print img
urllib.urlretrieve(img, goal_path+'/'+str(count) + '.jpg') # 下载图片,并进行命名(刚开始写这句的时候老是报错,后来才发现没有用str()进行类型转换,因为习惯了js的自动转换的思想,哈哈)
count = count+1 if __name__ == '__main__': # 程序运行入口
root_url = 'http://www.quanjing.com/' # 页面地址
downloader = Downloader()
downloader.html_download(root_url)
Bingo, 这样子就可以把一个页面所有的美女图片下载到你的硬盘上啦!
python下载指定页面的所有图片的更多相关文章
- python下载指定的版本包
首先我们很多时候在执行pip的时候是不行的 有时候很难成功,这个时候我们就要想其他的版本了 一.是不是这个包需要指定版本, 比如python2的和mysql链接的是,而python3则是mysqlc ...
- Java 编写小程序,下载指定网页上的所有图片
使用Java编写一个小程序,可以根据指定的网页地址,下载网页中的所有图片:使用到网络编程.线程池.IO和UUID的技术.具体代码如下: import java.io.File; import java ...
- 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
不管是app的下载链接还是普通文件的链接在微信内置浏览器或者QQ内置浏览器都会被屏蔽.这是微信对第三方下载域名实施的拦截政策.被拦截了用户在微信内打开就会提示“已停止访问该网页”. 那么当我们遇到这个 ...
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- 在PHP中如何实现在做了么个操作后返回到指定页面
我们经常会碰到类似用户在没有登录的情况下进行提问.评论,需要用户登录后返回刚才浏览的网页,这种功能用cookie保存当前url地址来实现.我用的是jquery,读者需要懂点jquery中的ajax请求 ...
- WebClient+Fiddler2完美搭配下载远程页面信息
WebClient可以下载远程页面信息,这个大家应该都知道,核心代码如下: WebClient web = new WebClient(); string url = String.Format(&q ...
- Python下载漫画
上午起来提不起劲,于是就用电脑看漫画,但是在线看漫画好烦,就想下下来看.一个一个点太麻烦,于是花了点时间用python写了个demo,把爱漫画的漫画下载下来,这样就可以随时随地看了.这也是我首次尝试用 ...
- 一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法!
一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法! 对于大中型网站,为了增强用户体验,往往需要根据不同城市站点的用户推送或展现相应个性化的内容,如对于一些大型门户网站的新闻会有 ...
- 从官网下载指定版本的JDK
从官网下载指定版本的JDK 一.百度搜索jdk,进入最新版Downloads界面 百度搜索jdk,或者jdk下载,点击进入jdk官网最新版本下载界面,可以看到当前最新版本为jdk12 二.找到JDK历 ...
随机推荐
- DatePicker日期与时间控件
DatePicker日期与时间控件 一.简介 二.方法 最日常的使用方法了 日期控件DatePicker 时间控件TimePicker 月份从0开始 三.代码实例 效果图: 代码: fry.Activ ...
- TextView两种显示link的方法
TextView两种显示link的方法 一.简介 也是TextView显示文本控件两种方法 也是显示丰富的文本 二.方法 TextView两种显示link的方法 1)通过TextView里面的类ht ...
- 如何用Tomcat部署前端静态文件
在项目开发的过程中,一些公司经常是前后台分开的,并不是所有的前端文件都在后台项目中,尤其是互联网公司.这时候就需要后端人员单独运行前端文件.怎么用Tomcat部署运行前端静态文件呢? 工具/原料 ...
- SpringMVC4整合CXF发布WebService
SpringMVC4整合CXF发布WebService版本:SpringMVC 4.1.6,CXF 3.1.0项目管理:apache-maven-3.3.3 pom.xml <project x ...
- <img>边框的border属性
默认地,图像是没有边框的(除非图像在 a 元素内部). 浏览器通常会把代表超链接的图像(例如包含在 <a> 标签中的图像)显示在两个像素宽的边框里面,以表示读者可以通过选择这个图像来访问相 ...
- 日志分析命令awk基础用法
awk awk是一个很好用的文本处理工具,相对于sed常用用作一整行的处理,awk则比较擅长将一行分成数个字段来处理.而在我们性能测试中,可以awk可以帮助我们造数,也可以帮助我们分析日志. 简单来说 ...
- Android下利用RadioGroup和RadioButton实现Tabbar的效果
本实现方法主要使用RadioGroup和RadioButton的组合方式来实现Tabbar的效果. 其中选中的Tab的切换的动作可以通过RadioGroup的OnCheckedChangeListen ...
- let防止变量声明提前
let可以解决原来js中,一个函数中变量混乱的问题,因为以前var 定义的变量时, {}是不能限制变量作用域的. "use strict"; +function(){ var t= ...
- 微信小程序如何在使用wx.request使用cookie
我主要是做asp.net mvc后端开发的,经常使用Jquery的ajax与后台的Web API进行数据交互. 最近公司要做一个小程序,要实现小程序与Web前端的通信,当然小程序是可以实现socket ...
- LINUX 修改本机yum源为163镜像源
进入yum源配置目录 [root@localhost yum.repos.d]# cd /etc/yum.repos.d/ 备份系统yum源,用于日后恢复. [root@localhost yum.r ...