Python3 - 抓取静态页面(图片)
发布日期:2021-06-30 19:50:27
浏览次数:2
分类:技术文章
本文共 2195 字,大约阅读时间需要 7 分钟。
python 3.4
#!/usr/bin/env python# coding=utf-8import urllibimport urllib.requestimport reimport timefrom threading import *from bs4 import BeautifulSoup# 控制共享资源的访问数量screenLock = Semaphore(value = 1)# headersheaders = { 'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36'}main_url = 'http://www.symmz.com'num = 1# set 无序不重复元素集pages = set()pages.add(main_url)# 防止jpg 重复srces = set()def downloadimg(url,depth): if depth != 0: print (depth) print (url) req = urllib.request.Request(url, headers=headers) try: res_html = urllib.request.urlopen(req).read().decode('utf-8') except urllib.HTTPError: print ('异常~') # 创建 BeautifulSoup对象 soup = BeautifulSoup(res_html,'html.parser') imgurllist = soup.find_all('img',{'src':re.compile(r'http://.+.jpg')}) urllist = soup.find_all('a',{'href':re.compile(r'/.+?/.+?.html')}) local_pash = './symmzImg01/' # 全局变量 global num for item in imgurllist: print (" src:" + item['src']) url = item['src'] if url not in srces: path = local_pash + str(num) + '.jpg' # 直接将远程文件下载到本地 urllib.request.urlretrieve(url,path) # 将图片url 存到set中 srces.add(url) num += 1 # 锁 screenLock.acquire() print (str(num) + '.jpg 已下载\n') screenLock.release() else: print('url 重复~'+url) # 深搜 for url in urllist: if url not in pages: global main_url pattern = re.compile(r'http://') newurl = main_url + url['href'] # 判断url 中是否有两个 http if(len(re.findall(pattern,newurl)) > 1): newurl = url['href'] print('newurl:'+newurl) downloadimg(newurl, depth-1) # 不要加入 重复url pages.add(url) time.sleep(1) else: return def start(): downloadimg(main_url,3)if __name__ == '__main__': start()
转载地址:https://lipenglin.blog.csdn.net/article/details/52850729 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月21日 23时11分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JAVA学习笔记9 - 异常
2019-04-30
JAVA学习笔记10 - 继承
2019-04-30
JAVA学习笔记11 - 接口interface
2019-04-30
JAVA学习笔记12 - 包package
2019-04-30
Android 开发学习笔记 00 - Getting Started
2019-04-30
【学习笔记】Android Activity
2019-04-30
【学习笔记】Android Fragments
2019-04-30
Android使用Retrofit_00_Getting Started
2019-04-30
Android使用Retrofit_01_OAuth2 + GitHub
2019-04-30
Django + REST学习笔记
2019-04-30
【转载】将Ubuntu16.04 中gedit在仅显示一个文件时显示文件名tab
2019-04-30
fstream 对象多次使用时注意clear
2019-04-30
调试 LenaCV 3D Camera (Linux)
2019-04-30
OpenCV杂记 - Mat in C++
2019-04-30
lnmp部署
2019-04-30
location区段
2019-04-30