Python3 爬虫--批量抓取图片
来源:互联网 发布:pc直接安装mac os系统 编辑:程序博客网 时间:2024/05/21 22:40
图片的批量抓取是爬虫批处理的典型例子,这里以煎蛋网美女图片为抓取对象,使用Python实现批量获取图片。
批量抓取程序
import urllib.requestimport osimport random# 打开网页def url_open(url): req = urllib.request.Request(url) req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36') response = urllib.request.urlopen(url) html = response.read() return html# 找到网页地址def get_page(url): html = url_open(url).decode('utf-8') a = html.find('current-comment-page') + 23 b = html.find(']',a) print (html[a:b]) return html[a:b]# 找到图片的地址def find_imgs(url): html = url_open(url).decode('utf-8') img_addrs = [] a = html.find('img src=') while a != -1: b = html.find('.jpg', a , a + 255) if b != -1: img_addrs.append('http:' + html[a+9:b+4]) else: b = a + 9 a = html.find('img src=',b) return img_addrs# 保存图片def save_imgs(folder,img_addrs): i = 1 for each in img_addrs: img = url_open(each)# pic_name = str(i) + '.jpg' pic_name = each.split('/')[-1] with open(pic_name,'wb') as f: f.write(img) i += 1 return i# 下载图片的主函数def download_pic(folder = 'mm',pages = 10): os.mkdir(folder) os.chdir(folder) count = 0 url = 'http://jandan.net/ooxx' page_num = int(get_page(url)) for i in range(pages): page_num -= i page_url = 'http://jandan.net/ooxx/' + 'page-' + str(page_num) + '#comments' img_addrs = find_imgs(page_url) for each in img_addrs: print(each) count += save_imgs(folder,img_addrs) print('总共图片数量:%d' %count)# 主函数入口if __name__ == '__main__': download_pic()
网址的批量生成
写爬虫要根据不同的网站做改变,要观察网站的html结构。以此网址为例,访问首页以及下一页:
这里可以看到网址中的 page-190,根据这个参数可以设置访问不同的网页,即我们平时访问的下一页,上一页。该网站获取不同页面网址(page_url)对应的代码如下:
# 找到网页地址def get_page(url): html = url_open(url).decode('utf-8') a = html.find('current-comment-page') + 23 b = html.find(']',a) print (html[a:b]) return html[a:b]url = 'http://jandan.net/ooxx'# 获取首页 page_numpage_num = int(get_page(url))# 根据url格式编辑想要访问页面的url for i in range(pages): page_num -= i page_url = 'http://jandan.net/ooxx/' + 'page-' + str(page_num) + '#comments' img_addrs = find_imgs(page_url) for each in img_addrs: print(each)
HTML中查找图片的网址
在每张图片上面选择—–查看元素,看对应图片的网址在网页HTML中是什么样子:
可以看到图片对应的标签为:
<img src="//wx1.sinaimg.cn/mw600/9f0e9ec6gy1fhqgkv69k0j20u0190b29.jpg" style="max-width: 480px; max-height: 750px;">
我们需要将 // 到 .jpg的内容截出来,代码如下:
# 找到图片的地址,从a开始,到b结束,如果找到,则添加在img_addrs[]的列表中,# 其中的 a+9 和 b+4 是计算好的偏移量def find_imgs(url): html = url_open(url).decode('utf-8') img_addrs = [] a = html.find('img src=') while a != -1: # 从 a 开始往后查找,查找结束位置为 a+255 ,即一个url的长度 b = html.find('.jpg', a , a + 255) if b != -1: img_addrs.append('http:' + html[a+9:b+4]) else: b = a + 9 a = html.find('img src=',b) return img_addrs
阅读全文
0 0
- Python3 爬虫--批量抓取图片
- Python3 网络爬虫之抓取图片
- Python3简单爬虫抓取网页图片
- Python3 定向爬虫之“抓取糗事百科图片”
- Python3爬虫抓取TP官网案例图片
- python网络爬虫系列(四) --- 批量抓取并保存图片
- Python3爬虫入门之贴吧图片批量获取
- Python3批量爬取网页图片(小爬虫)
- 使用Python3批量保存贴吧图片-附爬虫程序
- Python3.4 简单抓取爬虫
- python3爬虫--抓取网页信息
- python3爬虫--抓取天气信息
- python3 urllib爬虫抓取记录
- Python3抓取页面图片
- Python3抓取网页图片
- python3抓取百度图片
- 爬虫抓取网页图片
- python爬虫抓取图片
- JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
- 2、Angular-Ui Router 嵌套状态和嵌套视图
- CodeForces
- Echarts柱状图模板
- 分享一个比较好用的Makefile文件
- Python3 爬虫--批量抓取图片
- nexus
- maven工程导入myeclipse遇到的问题
- JDBC中加载驱动类与DriverManager的关系
- Sum of Consecutive Prime Numbers UVA
- linux0010
- CodeForces 825B Five-In-a-Row
- K
- 网页JavaScript特效之弹幕