本人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)