20170912多线程Python爬取图片
import threading #导入线程
from urllib import request #导入网页请求模块
import re #导入正则表达式模块
import os # 引入模块
from openpyxl import Workbook
from openpyxl import load_workbook
class customThread(threading.Thread):
def __init__(self,imgurl,imgpath):
threading.Thread.__init__(self)
self.imgurl=imgurl
self.imgpath=imgpath
def run(self):
#print('downloading : ',self.imgpath)
downloadimg(self.imgurl,self.imgpath)
def downloadimg(imgurl,imgpath):
try: #实践中发现会出现网页访问失败返回404的情况
response=request.urlopen(imgurl) #访问图片地址
imgcontents=response.read() #获取图片内容
except:
print(imgpath +'下载出错')
else:
f=open(imgpath,'wb') #打开文件
f.write(imgcontents) #写入内容
f.close #关闭文件
print('保存成功>>>>'+ imgpath ) def getimageurl(weburl,folder,imgname):
response=request.urlopen(weburl)#打开网页,获取响应文本
page=response.read() #读取网页源码
js= page.decode('utf-8') #转码
print(js)
pat=re.compile(r'(?<="//)www.dhresource.com/.*?\.jpg') #编译匹配模式
match=re.findall(pat,js) #匹配网页源码
if match: #若匹配则输出
#print ('匹配成功')
n=0
for each_match in match:
n+=1
imgurl='http://'+each_match
imgpath=folder +"\\"+ imgname+"_" +str(n)+'.jpg'
customThread(imgurl,imgpath).start() #调用下载图片函数
def mkdir(path):
# 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\")
# 判断路径是否存在
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
print(path+' 创建成功')
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print(path+' 目录已存在')
return False if __name__ == "__main__":
print('!!!!!!开始运行!!!!!!')
wb = load_workbook('URL.xlsx')
ws=wb.active
for i in range(2,51):
#print(ws.cell(row=i,column=1).value)
if ws.cell(row=i,column=1).value!=None:
imgname=str(ws.cell(row=i,column=1).value)
folder=os.getcwd() +"\\"+imgname
print(mkdir(folder))
weburl=ws.cell(row=i,column=2).value
getimageurl(weburl,folder,imgname) print('!!!!!!运行结束!!!!!!')
20170912多线程Python爬取图片的更多相关文章
- Python多线程Threading爬取图片,保存本地,openpyxl批量插入图片到Excel表中
之前用过openpyxl库保存数据到Excel文件写入不了,换用xlsxwriter 批量插入图片到Excel表中 1 import os 2 import requests 3 import re ...
- python 爬取图片
使用python的requests库爬取网页时,获取文本一般使用text方法,如果要获取图片并保存要用content 举个栗子,爬煎蛋网的图: #!/usr/bin/env python #-*- c ...
- Python爬去图片实例,python 爬取图片
# coding:utf-8 import requests import re import time proxies = { "http": "http://124. ...
- python爬取图片
1.导入需要的模块requests,BeautifulSoup,os(用于文件读写). 2.创建一个类,并初始化. 1 2 3 4 5 6 7 8 class BeautifulPicture: ...
- python多线程爬取图片实例
今天试着把前面那个爬取图片的爬虫改成了多线程爬取,虽然最后可以爬取存储图片了,但仍存在一些问题.网址还是那个网址https://www.quanjing.com/category/1286521/1. ...
- [python爬虫] 爬取图片无法打开或已损坏的简单探讨
本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...
- python如何使用request爬取图片
下面是代码的简单实现,变量名和方法都是跑起来就行,没有整理,有需要的可以自己整理下: image2local: import requests import time from lxml import ...
- 孤荷凌寒自学python第八十二天学习爬取图片2
孤荷凌寒自学python第八十二天学习爬取图片2 (完整学习过程屏幕记录视频地址在文末) 今天在昨天基本尝试成功的基础上,继续完善了文字和图片的同时爬取并存放在word文档中. 一.我准备爬取一个有文 ...
- 孤荷凌寒自学python第八十一天学习爬取图片1
孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...
随机推荐
- java定时任务调度工具
一.什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的时间执行次数自动执行的任务. 二.java中常用的定时任务调度工具: Timer Quartz 2.1两者区别: Timer源自jdk ...
- XXXcannot be resolved to a type
编写自动化测试用例一个新创建的用例中类继承了其他类,由于未知原因,eclipse没能自动编译源代码到build/classes(或其他classes目录)代码一直报错XXX cannot be res ...
- Python3基础 list reverse 反转列表
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 逆波兰表达式|2013年蓝桥杯A组题解析第六题-fishers
逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆波兰表 ...
- BZOJ4018: 小Q的幻想之乡
Description 背景 有一天,小Q梦见自己来到了理想国的幻想之乡. 描述 有一天,小Q梦见自己来到了理想国的幻想之乡.幻想乡有无穷户居民,第i个家庭住在编号为i的房屋里,编号从1开始,到正无穷 ...
- 配置和运行 MatchNet CVPR 2015 MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
配置和运行 MatchNet CVPR 2015 GitHub: https://github.com/hanxf/matchnet 最近一个同学在配置,测试这个网络,但是总是遇到各种问题. 我也尝试 ...
- Python 安装与环境变量配置
一.软件下载 Python安装包下载地址:https://www.python.org/ 二.安装过程(略) 三.环境变量配置: 方法一:使用cmd命令添加path环境变量 在cmd下输入: path ...
- kubernetes 实战4_命令_Configure Pods and Containers
Configure Service Accounts for Pods A service account provides an identity for processes that run in ...
- Docker之Swarm
Docker学习笔记 — Swarm搭建Docker集群 Swarm在schedule节点运行容器的时候,会根据指定的策略来计算最适合运行容器的节点,目前支持的策略有:spread, binpack, ...
- hihoCoder 1145 幻想乡的日常(树状数组 + 离线处理)
http://hihocoder.com/problemset/problem/1145?sid=1244164 题意: 幻想乡一共有n处居所,编号从1到n.这些居所被n-1条边连起来,形成了一个树形 ...