python批量下载图片的三种方法批量下载图片的三种方法
有三种方法,一是用微软提供的扩展库win32com来操作IE,二是用selenium的webdriver,三是用python自带的HTMLParser
解析。win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到)。selenium则提供了
Chrome,IE,FireFox等的支持,每种浏览器都有execute_script和find_element_by_xx方法,可以方便的执行js脚本(包括修
改元素)和读取html里面的元素。不足是selenium只提供对python2.6和2.7的支持。HTMLParser则是需要自己写个类继承基
类,重写解析元素的方法。个人感觉selenium用起来更方便,很容易操作html里的元素。
代码如下:
win32com:
复制代码 代码如下:
#将滚动条滑到底,最多滑动20000像素
#模拟键盘右键,查看多张图片
import sys
import win32com.client,win32api
import urllib.request
import time
import os
def main():
#获取参数
url=sys.argv[1]
#操作IE
ie=win32com.client.Dispatch(“InternetExplorer.Application”)
ie.Navigate(url)
ie.Visible=True
last_url=”
dir_name=”
while last_url!=url:
print(‘The URL is:’,url,’’)
while ie.ReadyState != 4:
time.sleep(1)
while ie.Document.readyState != “complete”:
time.sleep(1)
#滑动滚动条
win=ie.Document.parentWindow
lastY=-1;
for i in range(40):
win.scrollTo(0,500*i)
nowY=win.pageYOffset
if(nowY==lastY):
break
lastY=nowY
time.sleep(0.4)
print(‘Document load state:’,ie.Document.readyState)
doc=ie.Document
#第一次需要创建目录
if(dir_name==”):
root_dir=’E:\img’
dir_name=root_dir+’\’+doc.title
dir_name=dir_name.replace(‘|’,’-‘)
if(os.path.exists(root_dir)!=True):
os.mkdir(root_dir)
if(os.path.exists(dir_name)!=True):
os.mkdir(dir_name)
all_image=doc.images
print(‘共有’,all_image.length,’张图片’)
count=0;
for img in all_image:
if(img.id==’b_img’):
count=count+1
评论0