python小练——下载指定url中的图片

#coding=gbk
#download pictures of the url
#useage: python downpicture.py www.baidu.com

import os
import sys
from html.parser import HTMLParser
from urllib.request import urlopen
from urllib.parse import urlparse

def getpicname(path):
    '''    retrive filename of url        '''
    if os.path.splitext(path)[1] == '':
        return None
    pr=urlparse(path)
    path='http://'+pr[1]+pr[2]
    return os.path.split(path)[1]

def saveimgto(path, urls):
    '''
    save img of url to local path
    '''
    if not os.path.isdir(path):
        print('path is invalid')
        sys.exit()
    else:
        for url in urls:
            of=open(os.path.join(path, getpicname(url)), 'w+b')
            q=urlopen(url)
            of.write(q.read())
            q.close()
            of.close()

class myhtmlparser(HTMLParser):
    '''put all src of img into urls'''
    def __init__(self):
        HTMLParser.__init__(self)
        self.urls=list()
        self.num=0
    def handle_starttag(self, tag, attr):
        if tag.lower() == 'img':
            srcs=[u[1] for u in attr if u[0].lower() == 'src']
            self.urls.extend(srcs)
            self.num = self.num+1

if __name__ == '__main__':
    url=sys.argv[1]
    if not url.startswith('http://'):
        url='http://' + sys.argv[1]
    parseresult=urlparse(url)
    domain='http://' + parseresult[1]

q=urlopen(url)
    content=q.read().decode('utf-8', 'ignore')
    q.close()

myparser=myhtmlparser()
    myparser.feed(content)

for u in myparser.urls:
        if (u.startswith('//')):
            myparser.urls[myparser.urls.index(u)]= 'http:'+u
        elif u.startswith('/'):
            myparser.urls[myparser.urls.index(u)]= domain+u

saveimgto(r'D:\python\song', myparser.urls)
    print('num of download pictures is {}'.format(myparser.num))

  result:

  num of download pictures is 19

posted on 2011-08-19 17:04 一颗卤蛋 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lyroge/archive/2011/08/19/2145978.html

python小练——下载指定url中的图片相关推荐

  1. PHP下载CSS文件中的图片

    作为一个资深并且专业的扒皮人员,在我从初三开始投入伟大的互联网中到现在积累了丰富的扒皮经验.我相信每个做web的程序员也都会有类似的经历. 在扒皮过程中,必不可少的需要下载样式文件中的图片.碰到比较庞 ...

  2. php下载css图片,PHP实现下载CSS文件中的图片

    作为一名资深专业的程序员,小编积累了丰富的经验,相信每个在网络上工作的程序员都会有类似的经历,爱站技术频道小编在这里总结了PHP实现下载CSS文件中的图片,下面一起跟着小编来了解一下吧! 在扒皮过程中 ...

  3. php中怎么应用css文件,利用PHP怎么下载CSS文件中的图片

    利用PHP怎么下载CSS文件中的图片 发布时间:2020-12-18 16:14:49 来源:亿速云 阅读:87 作者:Leah 这篇文章给大家介绍利用PHP怎么下载CSS文件中的图片,内容非常详细, ...

  4. 详解 利用NPOI向Excel指定位置中加入图片(支持.xlsx和.xls)

    git地址:https://github.com/KaiZons/-NPOI-Excel-.git/** Author:zhoukaikai* 注意:本项目中使用的NPOI版本为 V2.4.1.0:需 ...

  5. 通过Python的fitz库提取pdf中的图片

    文章目录 前言 一.fitz库是什么? 二.安装fitz库 三.查看fitz库版本 四.pymupdf库是什么? 五.安装pymupdf库 六.查看pymupdf库版本 七.fitz和pymupdf是 ...

  6. 超好用Python小功能(持续更新中)

    文章目录 一.字符串操作小功能 1.把数字转为千位数值类型 2.检测字符串是不是纯数字 3.python列表的交.并.差集 4.对列表中字典中的字典排序 5.python 求角度大小 6.已知一个点, ...

  7. 吴枫 python小课怎么样_编程中,有哪些好的习惯从一开始就值得坚持?

    电影<喜剧之王>里,周星驰饰演的尹天仇,是一个渴望成为真正的演员,却不断沦为落魄跑龙套的小人物. 即便如此,他对演戏的态度始终认真而可敬.他每天不但锲而不舍寻找演戏机会,还在街坊福利社开了 ...

  8. 从指定URL中提取文件名

    通过String对象的replace()方法实现,该方法用于替换一个与正则表达式匹配的子串,该方法的替换字符串可以包含$字符 URL是否正确的正则表达式为: //验证URL是否正确的正则表达式var ...

  9. python学习之下载百度搜索到的图片(含源代码)

    23年刚开工比较闲,这两天有看到小伙伴在积极的学习python课程,自己也不能拉下,找了一些资料,测试下载百度图片. 此下载代码比较简单,码字在这里,也是让大家一起来学习下,这个流程和思路.多多支持哦 ...

最新文章

  1. 菜鸟教程 php跨域,PHP Ajax 跨域问题最佳解决方案
  2. python编程用什么电脑好-初学Python编程看哪些书比较好?
  3. ubuntu安装docker下载慢,运行hello-world超时
  4. 旺财速啃H5框架之Bootstrap(五)
  5. 唏嘘!2019榜单出炉:铁打的Python连续3年第一,它居然跌出前十?
  6. 场效应管原理_场效应管——不就是一个电控开关?
  7. Theano2.1.11-基础知识之稀疏
  8. 体验Visual Studio 2015 Windows Forms应用程序开发与维护
  9. java 字符串排序_Java控制台输入字符串及字符串比较
  10. r-cnn 行人检测_了解用于对象检测的快速R-CNN和快速R-CNN。
  11. 索尼android 怎么截屏快捷键,索尼z5怎么截屏 sony z5截图方法教程
  12. 将txt文件编码改为utf-8格式
  13. 小学计算机专业说课稿模板,小学信息技术计算机的小管家说课稿
  14. 火车头伪原创接口【基于ai伪原创】
  15. 后院失火的大疆,距离真正的巨头还有多远?
  16. arduino+三引脚蜂鸣器YL-44(3pins)的简单使用
  17. 结构化数据和非结构化数据的分析
  18. 【Python简单爬虫练习--Bilibili榜单】爬取+梳理B站排行榜页面
  19. 中国呼吸介入领导者堃博医疗在港交所挂牌上市;勃林格殷格翰收购Abexxa Biologics | 医药健闻...
  20. 安装PS出现“由于找不到VCRUNTIME 140_1.dll”的解决方法

热门文章

  1. 部署到gcp_将S/4部署在“大型公有云”上
  2. oracle如何查看某个时间段调用的函数的异常信息_每天14点遭遇惊魂时刻,如何一步一步揪出真凶?...
  3. java系列2:方法的重载
  4. 6 | Spatial-based GNN/convolution模型之MoNET
  5. graphviz安装以及入门
  6. SAP License:BWBCS学习笔记
  7. java 优秀开源项目
  8. 5-去掉a标签下划线,禁止a标签的跳转
  9. 在webstorm中新建模板
  10. 在发布ASP.NET网站的时候,出现state server错误