2018-07-19 10:46:35 424浏览
今天扣丁学堂小编给大家整理了一下关于目前在线课程Python培训之爬虫网页图片抓取的方法,能实现简单的网页图片下载,具体实例代码,下面我们一起来看一下吧。
__author__="JentZhang"
importurllib.request
importos
importrandom
importre
defurl_open(url):
'''
打开网页
:paramurl:
:return:
'''
req=urllib.request.Request(url)
req.add_header('User-Agent',
'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.75Safari/537.36')
#应用代理
'''
proxyies=["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
proxy=random.choice(proxyies)
proxy_support=urllib.request.ProxyHandler({"http":proxy})
opener=urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response=urllib.request.urlopen(url)
html=response.read()
returnhtml
defsave_img(folder,img_addrs):
'''
保存图片
:paramfolder:要保存的文件夹
:paramimg_addrs:图片地址(列表)
:return:
'''
#创建文件夹用来存放图片
ifnotos.path.exists(folder):
os.mkdir(folder)
os.chdir(folder)
foreachinimg_addrs:
filename=each.split('/')[-1]
try:
withopen(filename,'wb')asf:
img=url_open("http:"+each)
f.write(img)
excepturllib.error.HTTPErrorase:
#print(e.reason)
pass
print('完毕!')
deffind_imgs(url):
'''
获取全部的图片链接
:paramurl:连接地址
:return:图片地址的列表
'''
html=url_open(url).decode("utf-8")
img_addrs=re.findall(r'src="(.+?\.gif)',html)
returnimg_addrs
defget_page(url):
'''
获取当前一共有多少页的图片
:paramurl:网页地址
:return:
'''
html=url_open(url).decode('utf-8')
a=html.find("current-comment-page")+23
b=html.find("]",a)
returnhtml[a:b]
defdownload_mm(url="http://www.codingke.com/ooxx/",folder="OOXX",pages=1):
'''
主程序(下载图片)
:paramfolder:默认存放的文件夹
:parampages:下载的页数
:return:
'''
page_num=int(get_page(url))
foriinrange(pages):
page_num-=i
page_url=url+"page-"+str(page_num)+"#comments"
img_addrs=find_imgs(page_url)
save_img(folder,img_addrs)
if__name__=="__main__":
download_mm()
以上所述是小编给大家介绍的Python爬虫之网页图片抓取的方法,由于代码中访问的网址已经运用了反爬虫的算法,希望对大家有所帮助。
【关注微信公众号获取更多学习资料】