【python小练】图片爬虫之BeautifulSoup4--转自博客园
2017-10-09 21:57
621 查看
本文转自博客园,作者Liez。
原文链接如下:
http://www.cnblogs.com/liez/p/5399967.html
其实,用Python爬取图片与爬取文字类似,只要找到图片对应的网址(如http://xxx.jpg),接下来就只需将其保存至新创建的jpg文件中。本质上只要4行代码:
import urllib.request
import os
os.chdir(os.path.join(os.getcwd(), 'D:/Data_Rabbit'))
原文如下:
先前用正则表达式匹配出符合要求的<img>标签真的超麻烦的,正则式错一点点都要完蛋,用bs4感觉方便很多。
bs4是将整个html拆解成字典和数组,所以处理起来比较简单。
以这个页面为例(毕竟堆糖本命):http://www.duitang.com/search/?kw=%E6%96%87%E8%B1%AA%E9%87%8E%E7%8A%AC&type=feed#!s-p1
要下载我想要的图片,最终目标是图片的url数据。
先看页面源码:
1. 读取页面代码:
2. 见上图,我想下载的图片都包含在符合【属于class="a"的<a>标签】这个特点的<a>标签下,用bs4找出这些<a>标签,用下面这句代码:
3. 从中找出图片<img>标签,并获取链接地址url到img_src:
从第二步来看确实是比纯粹用正则表达式省时省力。
完整代码如下,其实也只改了正则那一小部分:
和前一篇一样添加了起始页和终止页两个参数。
下载后文件夹:
原文链接如下:
http://www.cnblogs.com/liez/p/5399967.html
其实,用Python爬取图片与爬取文字类似,只要找到图片对应的网址(如http://xxx.jpg),接下来就只需将其保存至新创建的jpg文件中。本质上只要4行代码:
import urllib.request
import os
os.chdir(os.path.join(os.getcwd(), 'D:/Data_Rabbit'))
#用于改变当前工作目录到指定的路径。
img_src="http://cpc.people.com.cn/gbzl/upload/20140327091239157.jpg" pic_name='1.jpg' urllib.request.urlretrieve(img_src, pic_name)
#用于将网页上的数据保存到本地,前两个参数分别为网址和保存路径。第一行和最后一行真的是学习了,没想到Python代码可以那么简洁。
原文如下:
先前用正则表达式匹配出符合要求的<img>标签真的超麻烦的,正则式错一点点都要完蛋,用bs4感觉方便很多。
bs4是将整个html拆解成字典和数组,所以处理起来比较简单。
以这个页面为例(毕竟堆糖本命):http://www.duitang.com/search/?kw=%E6%96%87%E8%B1%AA%E9%87%8E%E7%8A%AC&type=feed#!s-p1
要下载我想要的图片,最终目标是图片的url数据。
先看页面源码:
1. 读取页面代码:
html_doc = urllib.request.urlopen(url + "#!s-p" + str(n+x-1)).read().decode('utf-8') soup = BeautifulSoup(html_doc, "lxml")
2. 见上图,我想下载的图片都包含在符合【属于class="a"的<a>标签】这个特点的<a>标签下,用bs4找出这些<a>标签,用下面这句代码:
soup.find_all('a', class_='a') #soup.find_all('(标签名)',(符合属性))
3. 从中找出图片<img>标签,并获取链接地址url到img_src:
for myimg in soup.find_all('a', class_='a'): img_src = myimg.find('img').get('src')
从第二步来看确实是比纯粹用正则表达式省时省力。
完整代码如下,其实也只改了正则那一小部分:
from bs4 import BeautifulSoup
import urllib.request
import os
def downlaodimg(url,m,n):
os.chdir(os.path.join(os.getcwd(), 'photos'))
t = 1 # 记录图片张数
for x in range(n-m+1):
html_doc = urllib.request.urlopen(url + "#!s-p" + str(n+x-1)).read().decode('utf-8') soup = BeautifulSoup(html_doc, "lxml")
for myimg in soup.find_all('a', class_='a'):
pic_name = str(t) + '.jpg'
img_src = myimg.find('img').get('src')
urllib.request.urlretrieve(img_src, pic_name)
print("Success!" + img_src)
t += 1
print("Next page!")
downlaodimg("http://www.duitang.com/search/?kw=%E6%96%87%E8%B1%AA%E9%87%8E%E7%8A%AC&type=feed",1,3)
和前一篇一样添加了起始页和终止页两个参数。
下载后文件夹:
相关文章推荐
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + urlretrieve 抓取并保存图片:weheartit
- 【python小练】图片爬虫之BeautifulSoup4
- 使用requests+beautifulsoup模块实现python网络爬虫功能
- Python爬虫知识(1)——scrapy vs requests+BeautifulSoup
- [转载]Python爬虫入门八之Beautiful Soup的用法
- Python爬虫利器二之Beautiful Soup的用法
- Python2 爬虫(九) -- Scrapy & BeautifulSoup之再爬CSDN博文
- python简单爬虫开发(urllib2、requests + BeautifulSoup)
- Python爬虫利器二之Beautiful Soup的用法
- Python爬虫利器二之Beautiful Soup的用法
- 【爬虫】python+urllib+beautifusoup爬取花瓣网美女图片
- Python爬虫入门八之Beautiful Soup的用法
- python3.3 lxml+beautifulsoup 爬虫说明
- python爬虫-html解析器beautifulsoup
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取动态网页内容:Knewone
- Python爬虫利器二之Beautiful Soup的用法
- Django+python+BeautifulSoup垂直搜索爬虫
- Python爬虫利器二之Beautiful Soup的用法
- Python爬虫学习纪要(十二):BeautifulSoup相关知识点4
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取自己想要网页内容