python 点击按钮采集图片_python多线程采集图片

cmd中运行

>python untitled2.py    图片的网站

import requests

import threading

from bs4 import BeautifulSoup

import sys

import os

if len(sys.argv) != 2:

print("Usage : " )

print(" python main.py [URL]" )

exit(1)

# config-start

url = sys.argv[1]

threadNumber = 20

# 设置线程数 # config-end

def getContent(url):

try:

response = requests.get(url)

response.raise_for_status()

response.encoding = response.apparent_encoding

return response.text

except Exception  as e:

print(e)

return str(e)

def getTitle(soup):

try:

return soup.title.string

except:

return "UnTitled"

def getImageLinks(soup):

imgs = soup.findAll("img")

result = []

for img in imgs:

try:

src = img['src']

if src.startswith("http"):

result.append(img['src'])

else:

result.append(domain + img['src'])

except:

continue

return result

def makeDirectory(dicName):

if not os.path.exists(dicName):

os.mkdir(dicName)

def downloadImage(imgUrl,savePath):

local_filename = imgUrl.split('/')[-1]

local_filename = formatFileName(local_filename)

r = requests.get(imgUrl, stream=True)

counter = 0

if not savePath.endswith("/"):

savePath += "/"

f = open(savePath + local_filename, 'wb')

for chunk in r.iter_content(chunk_size=1024):

if chunk:

f.write(chunk)

f.flush()

counter += 1

f.close()

def formatFileName(fileName):

fileName = fileName.replace("/","_")

fileName = fileName.replace("\\","_")

fileName = fileName.replace(":","_")

fileName = fileName.replace("*","_")

fileName = fileName.replace("?","_")

fileName = fileName.replace("\"","_")

fileName = fileName.replace(">","_")

fileName = fileName.replace("

fileName = fileName.replace("|","_")

fileName = fileName.replace(" ","_")

return fileName

def threadFunction(imgSrc,directoryName):

downloadImage(imgSrc,directoryName)

class myThread (threading.Thread):

def __init__(self, imgSrc, directoryName):

threading.Thread.__init__(self)

self.imgSrc = imgSrc

self.directoryName = directoryName

def run(self):

threadFunction(self.imgSrc, self.directoryName)

def getPrefix(url):

# http://doamin/xxx.jpg

return ''.join(i+"/" for i in url.split("/")[0:4])

def getDomain(url):

return ''.join(i+"/" for i in url.split("/")[0:3])

content = getContent(url)

prefix = getPrefix(url)

domain = getDomain(url)

soup = BeautifulSoup(content, "html.parser")

images = getImageLinks(soup)

title = getTitle(soup)

title = formatFileName(title)

print(u"页面标题 : " , title )

print(u"本页图片数量 :",len(images))

print(u"正在创建文件夹以用来保存所有图片")

makeDirectory(title)

threads = []

for image in images:

print(u"图片地址 : " + image)

threads.append(myThread(image, title))

for t in threads:

t.start()

while True:

if(len(threading.enumerate()) < threadNumber):

break

print(u"所有图片已加入下载队列 ! 正在下载...")

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

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

相关文章

一起手写Vue3核心模块源码,掌握阅读源码的正确方法

最近和一个猎头聊天&#xff0c;说到现在前端供需脱节的境况。一方面用人方招不到想要的中高级前端&#xff0c;另一方面市场上有大量初级前端薪资要不上价。特别是用 Vue 框架的&#xff0c;因为好上手&#xff0c;所以很多人将 Vue 作为入门框架&#xff0c;但学得深的人并不…

jquery|javascript 回车事件

转载链接&#xff1a;http://www.cnblogs.com/wenbo/archive/2011/08/20/2147014.html 转载链接: http://www.2cto.com/kf/201202/119741.html jquery实现回车事件&#xff0c;代码如下&#xff1a; 全局&#xff1a; $(function(){ document.onkeydown function(e){…

【Vegas原创】ASP 0131 不允许父路径的解决

现象&#xff1a; Active Server Pages 错误 ASP 0131 不允许的父路径 /admin/login.asp&#xff0c;行 2 包含文件 ../include/config.asp 不能用 .. 表示父目录。 解决方案&#xff1a; IIS6>站点属性>主目录>配置>选项>启用父路径 转载于:https://www.cnblog…

腾讯正式宣布成立技术委员会,要对组织架构下狠手

2019 年伊始&#xff0c;社交巨人腾讯正式宣布成立技术委员会&#xff0c;计划在未来发力内部代码的开源和协同&#xff0c;投入更多资金和精力在技术建设上。BAT 三家里一直被诟病技术建设落后的腾讯&#xff0c;终于开始补足自己的短板。这会对腾讯自身带来什么&#xff1f;又…

2020 前端技术发展回顾

大家好&#xff0c;我是若川&#xff0c;今天给大家分享一篇来自阿里妈妈前端快爆的好文。另外&#xff0c;偷偷告诉你&#xff0c;截止今晚9点 点此抽奖送红包还送3本比红宝书还贵的书可以点击文章末尾阅读原文直达知乎链接&#xff0c;以下是正文2020 终究是一个不平凡的一年…

php验证码函数 使用imagestring() imagefttext()设置字体大小

转载路径&#xff1a;http://hi.baidu.com/asdasd_cn/item/62977d1e26ca36e85e53b142 生成验证码图片的两个函数 第一个是用imagestring bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ) imagestring() 用 col …

提取地图中道路_非机器学习方法·从遥感影像中提取道路

本科低年级曾经做过一个提取道路线的题目。提供的数据&#xff1a;老师给我们了一幅学校周边地区的影像&#xff0c;包括RGBInfrared四个波段。一开始使用的方法&#xff1a;当时尚青涩的我和小伙伴们一起使用KMEANS、阈值分割等等方法试图将那道路从影像中分离出来。遇到的问题…

图片尺寸自适应

图片尺寸自适应 οnlοad"javascript:if(this.height>this.width){this.height100}else{this.width100} 转载于:https://www.cnblogs.com/TangZhongxin/archive/2009/12/14/3942483.html

第一章知识点

第一章知识点 一&#xff1a;SQL语言 1&#xff0c;结构化查询语言&#xff0c;是关系数据库的标准语言 2&#xff0c;分类&#xff1a; 2.1&#xff1a;数据操作语言&#xff1a;DML&#xff1b;包括&#xff1a;即增删查改&#xff1b;insert&#xff0c;update&#xff0c;d…

2021年,推荐这几个优质公众号碎片化学习

2021 年了&#xff0c;前端技术日新月异&#xff0c;发展迅速&#xff0c;前端公众号是不是感觉越来越多了&#xff1f;在着辞旧迎新之际&#xff0c;这里盘点几个前端开发工程师 2021 年必须关注的优质公众号&#xff0c;希望对你有所帮助。大家可以像我一样&#xff0c;利用碎…

php 处理表单里面的 单双引号

转载链接&#xff1a;http://developer.51cto.com/art/200911/165392.htm 我们今天要向大家介绍的是PHP magic_quotes_gpc的具体使用方法。大家都知道在PHP中一个特殊的函数魔术函数&#xff0c;它在引用的过程中只有在传递$_GET,$_POST,$_COOKIE时才会发生作用。 PHP函数preg…

阿里云插件新版发布,多特性助力提升开发者体验

好消息&#xff01;阿里云 Cloud Toolkit 新版本于近日正式发布&#xff0c;推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件&#xff0c;多个重大特性&#xff0c;持续提升开发者体验&#xff0c;本文将带大家快速预览该新版本。 本文只挑选下面三个重大特性进行解读&…

海鸥表表带太长了怎么拆_表带安装,表带太长了,怎么拆解和安装?

表带太长了&#xff0c;怎么拆解和安装&#xff1f;1、准备拆表带前请看清楚表带背面的箭头。2、有箭头的带粒是可拆卸的。3、拧松拆带器把手&#xff0c;将表带放入表槽&#xff0c;并保持拆带器的钢针对准针孔&#xff0c;如图二&#xff0c;且拆带器的钢针顺着箭头的指示方向…

python类库31[文件和目录os+os.path+shutil]

一 常用函数 os模块 os.sep 表示默认的文件路径分隔符&#xff0c;windows为\, linux为/os.walk(spath): 用来遍历目录下的文件和子目录os.listdir(dirname)&#xff1a;列出dirname下的目录和文件os.mkdir() &#xff1a; 创建目录os.makedirs(): 创建目录&#xff0c;包含中间…

上一轮中奖信息公布

大家好&#xff0c;我是若川&#xff0c;抽奖活动其实挺耗时耗力的&#xff0c;尤其是留言和在看抽奖。比如我这篇文章写完就已经23:50了。特别想说的是&#xff1a;有126人点击了在看&#xff0c;但我的好友展示只有93人在看。说明还有30多人点击了在看&#xff0c;但忘记加我…

css判断不同分辨率显示不同宽度布局实现自适应宽度

转载链接&#xff1a;http://www.jb51.net/css/151312.html 点评&#xff1a;CSS判断不同分辨率浏览器&#xff08;显示屏幕&#xff09;显示不同宽度布局CSS3技术支持IE6到IE8。将用到css3 media样式进行判断&#xff0c;但IE9以下版本不支持CSS3技术&#xff0c;这里DIVCSS5给…

安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...

摄像机API有两个不同的参数用于控制帧速率&#xff1a;setPreviewFrameRate,它采用单帧速率值并且不推荐使用,setPreviewFpsRange采用一系列FPS值,是当前推荐的控制.单FPS设置控制不充分的原因是,有时您希望相机在黑暗条件下降低帧速率以使取景器保持明亮(静态相机取景器就是这…

开发、测试与QA的区别以及其他

觉得这个比喻比较新颖&#xff0c;觉得蛮有意思的&#xff0c;故转自过来。 最近部门中有同事在问这个问题&#xff0c;我想应该还是有满多人对这三个角色的定位还不是很清楚&#xff0c;因此就这三个角色谈谈我个人的认识。 网络上关于这三种角色的定义已经够多&#xff0c;在…

CentOS7Jenkins安装

2019独角兽企业重金招聘Python工程师标准>>> CentOS7Jenkins安装 2017年05月07日 20:20:32 申明霜 阅读数&#xff1a;13945 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/sms15732621690/article/details/713…

2020 全球 JS 现状调查报告

大家好&#xff0c;我是若川。偷偷告诉你&#xff0c;今天推文的第二条是在我的公众号回复「网盘」免费领取百度网盘会员&#xff0c;欢迎大家分享转发。给大家分享一篇好文&#xff0c;往期类似好文&#xff1a;2020 前端技术发展回顾2020年大前端技术趋势解读以下是正文&…