使用Beautifulsoup爬取摄图网图片
本人python小菜鸟一枚(可能连菜鸟也算不上,哈哈!)最近在学爬虫,在这里记录一些随笔,希望和大家一起分享,愿和大家一起成长!
Beautifulsoup作为一个强大的解析库,它借助网页的结构和属性等特征来解析网页。有了它,我们可以不用再去写一些复杂的正则表达式,只需要简单的几天语句,就可以完成网页中的某个元素的提取,话不多说,下面以实例来进行说明。
首先我们选择要爬去的网站:http://699pic.com/tupian/meiguihua.html,网站界面如图所示:
本人想做的就是把该界面的图片爬取下来并保存到本地。首先进入该界面然后鼠标右击,点击Firebug查看元素(我这里浏览器使用的是火狐林浏览器),如图所示。然后把鼠标放到图片上去,可以发现网页的图片都带有class=‘lazy’,那么我可以通过class属性来获取图片的链接,然后进行相关的爬去工作。代码如下:
# -*- coding:utf-8 -*- '''引入requests和BeautifulSoup库 from bs4 import BeautifulSoup import requests url = 'http://699pic.com/tupian/meiguihua.html' #要爬取的网页地址 response = requests.get(url) 使用requests的get方法获取网页内容 #print(response.text) soup = BeautifulSoup(response.text,'html.parser') #使用BeautifulSoup对网页进行解析 #print(soup) images = soup.find_all(class_ = 'lazy') #通过find_all方法获取class属性为‘lazy’的图片链接: #print(images)
这是我们得到的images是个列表,我们真正需要的是图片中箭头所指的链接。然后进行进一步解析操作,代码如下:
for image in images: image_url = image['data-original'] title = image['title'] # print(image_url)
这是我得到的每个图片的地址,最后一步是通过with open方法把爬取到的图片进行保存了,代码如下:
contents = requests.get(image_url).content with open(r'D:\python\ '+ title+ ' .jpg','wb') as f: #保存到D盘python文件夹下,这里需要自己先建下python文件夹呢 f.write(contents)
这就是保存下来的部分图片了,哈哈,下面把整体代码给大家展示一下:
# -*- coding:utf-8 -*- from bs4 import BeautifulSoup import requests url = 'http://699pic.com/tupian/meiguihua.html' response = requests.get(url) #print(response.text) soup = BeautifulSoup(response.text,'html.parser') #print(soup) images = soup.find_all(class_ = 'lazy') #print(images) # image_url = []#把获得的图片地址放到image_url中去 # for image in images: # #print(image['data-original']) # image_url.append(image['data-original']) # # #print(image_url) for image in images: image_url = image['data-original'] title = image['title'] print(image_url) # print(title) contents = requests.get(image_url).content with open(r'D:\python\ '+ title+ ' .jpg','wb') as f: f.write(contents)