博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫 BeautifulSoup库实践——保存网页图片
阅读量:3959 次
发布时间:2019-05-24

本文共 1496 字,大约阅读时间需要 4 分钟。

Python爬虫(五)

学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— BeautifulSoup库应用实践之保存网页 ——

  1. 引入库:
import requestsfrom bs4 import BeautifulSoup
  1. 确定保存路径(推荐使用绝对路径):
PATH = "/Users/Ezy/Documents/Test/freebuf/"
  1. 目标图片的地址,
url = "https://www.freebuf.com/"
  1. 获取图片
r = requests.get(url, "html.parser")#“lxml”是Python 3 新增的参数,需要设定解析器,本地一般为‘lxml’soup = BeautifulSoup(r.content,"lxml")#寻找源代码中所有‘img’标签其中的‘src’参数,获取图片名称和地址img_url = soup.find('img')['src']#将图片名称提取出来,之所以要‘+1’是为了去掉‘/’,使其不会出现在图片名字中img_name = img_url[img_url.rfind('/')+1:]
  1. 保存图片和网页
r = requests.get(img_url, "html.parser")con = r.content#注意:在Python 3 中要使用二进制写入模式(‘wb’)来开启待操作文件,而不能像原来Python 2 那样,采用字符写入模式(‘w’)o = open(PATH + img_name, 'wb')o.write(con)o.close()

效果是:

BeautifulSoup库应用实践

BeautifulSoup库应用实践

  1. 但很显然,我们这段代码操作起来太复杂了,我们可以进行优化,首先我们将查找图片和保存图片封装进两个函数:
def getimg(img_url):def main(url):
  1. 查找获取图片部分代码和之前一样:
def getimg(img_url):    img_name = img_url[img_url.rfind('/')+1:]    #本地的图片地址    file = PATH + img_name    r = requests.get(img_url, "html.parser")    con = r.content    o = open(file, 'wb')    o.write(con)    o.close()    return file
  1. 保存图片部分代码稍加改动,并加上保存网页的代码,原理方法相同:
def main(url):    r = requests.get(url, "html.parser")    soup = BeautifulSoup(r.content,"lxml")    imgs = soup.find_all('img')    for img in imgs:        img_url = img['src']        print (img_url)        img['src'] = getimg(img_url)    o = open("D:/MyProject/image/test.html",'wb')    o.write(str(soup))    o.close()if __name__ == "__main__":    url = "https://www.freebuf.com/"    main(url)

效果如图:

BeautifulSoup库应用实践
BeautifulSoup库应用实践

——————完整代码请点击查看。

转载地址:http://bbazi.baihongyu.com/

你可能感兴趣的文章
数据库分库分表
查看>>
hibernate inverse 和cascade讲解
查看>>
建模工具Rose的学习
查看>>
javascript ajax提出异步请求
查看>>
Hibernate 中的 QBC
查看>>
解快局域网共享问题
查看>>
xp常用命令
查看>>
java 加密解密
查看>>
xp 忘记密码
查看>>
xp 忘记密码
查看>>
java 过滤器
查看>>
java 过滤器
查看>>
as发送邮件
查看>>
AJAX应用之注册用户即时检测
查看>>
File 类小结
查看>>
java除去字符串空格
查看>>
jsp 2.0标记文件
查看>>
Hibernate中Criteria的完整用法
查看>>
sql jsp
查看>>
Word生成目录
查看>>