python3.5——爬虫实现批量下载图片(正则表达式法和BeautifulSoup第三方库法)
来源:互联网 发布:日本直播软件 编辑:程序博客网 时间:2024/05/22 03:14
先来例程:
正则表达式法:(不推荐)
# -*- coding: utf-8 -*-"""Created on Thu Jun 1 16:22:10 2017@author: qiu"""import urllibimport re##下载网页def get_content(url): ''' @url:需要下载的网址 下载网址 ''' html = urllib.request.urlopen(url) content = html.read().decode('utf-8')#转码 html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题# print (type(content)) return content#print (get_content(url)) def get_image(info): ''' @info:网页信息 查看下载内容的编码格式 <img pic_type="0" class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=69832ccb83025aafd3327ec3cbecab8d/ea2b2834349b033be32596d114ce36d3d539bd09.jpg" width="560" height="315" changedsize="true"> 利用正则表达式学习样式规则 下载图片 ''' #正则表达式写法是重点 regx = r'pic_type="0" class="BDE_Image" src="(.+?\.jpg)"' pat = re.compile(regx) image_code = re.findall(pat,info) print(type(image_code)) #一个一个保存 i=1 for image_url in image_code: print(image_url) urllib.request.urlretrieve(image_url,"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(i)) i+=1url = "https://tieba.baidu.com/p/2218566379" info = get_content(url)get_image(info)
BeautifulSoup法:# -*- coding: utf-8 -*-"""Created on Thu Jun 1 19:38:11 2017@author: qiu"""import urllibfrom bs4 import BeautifulSoup#beautifulsoup方法,第三方库的方法,爬找网页 ## 下载网页def get_content(url): ''' @url:需要下载的网址 下载网址 ''' html = urllib.request.urlopen(url) content = html.read().decode('utf-8')#转码 html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题# print (type(content)) return content def get_image(info): ''' 利用Soup第三方库实现抓取 ''' soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml” all_image = soup.find_all('img',class_ = "BDE_Image") x=1 for image in all_image: print(all_image) urllib.request.urlretrieve(image['src'],"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(x)) x+=1 url = "https://tieba.baidu.com/p/2218566379" info = get_content(url) print (info) get_image(info)
总结:
1、首先熟悉网页编程,至少能知道图片对应程序中的位置,将所需要的图片的程序内容单独拿出来,并比较和其他噪声图片的区别,包括class,pic_type等,能够保证所需下载内容程序书写上的唯一性。
2、利用"re"正则表达式或者all_image = soup.find_all('img',class_ = "") 方法实现唯一化表达
3、一些技巧总结:print (type( ))利用查看返回值类型,列表?字典?对象?等,如果是class,一定有方法,利用print (dir( )) 查看对象的方法。或者直接看官网文档。
问题:
1、一些动态网页需要另外技巧了,例如百度图片(康复机械臂)上的图片如何下载,是另外一个需要解决的问题。
更好的方法:scrapy(爬虫框架)
不过安装有点麻烦,当然我还是pip法:库
阅读全文
0 0
- python3.5——爬虫实现批量下载图片(正则表达式法和BeautifulSoup第三方库法)
- python3实现爬虫爬取今日头条上面的图片(requests+正则表达式+beautifulSoup+Ajax+多线程)
- python网络爬虫-正则表达式和BeautifulSoup
- BeautifulSoup与正则_简单爬虫python3实现
- python3爬虫之入门和正则表达式
- Python3爬虫之入门和正则表达式
- Python3爬虫之入门和正则表达式
- python3爬虫之入门和正则表达式
- python3爬虫初级入门和正则表达式
- Python3实现批量下载百度搜索图片
- python3爬虫——正则表达式re详解(1)
- Python3 批量下载图片
- Python3 爬虫--批量抓取图片
- python爬虫——BeautifulSoup 抓取图片
- Python爬虫实例——基于BeautifulSoup和requests实现
- 【笔记】5、初学python3网络爬虫——正则表达式的基本使用
- Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
- ython抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
- 自然语言处理发展历程自我总结
- Python命令行参数
- C++对数据文件的操作
- android input 按键分发(inputManager)
- 公司看到的备忘编辑
- python3.5——爬虫实现批量下载图片(正则表达式法和BeautifulSoup第三方库法)
- ShareUtils保存图片
- 微软大楼设计方案 bfs和线段树
- JavaScript学习笔记(第四天)
- python 乘法表
- MQTT,mosquitto,Eclipse Paho
- Spring In Action(六):处理请求中的参数
- 《一言以蔽之,十年架构之路汇成一句话》峰会学习笔记
- Java基础教程5-获取用户输入