python爬虫之json实战

python爬虫之json实战

【导读】记录学习爬虫的过程
【主题】python爬虫之json实战
【分析】
1.先进行目标网站分析
2.再用BeautifulSoup进行解析网页
3.寻找json图片数据
3.进行图片存储
【注意】
代码要层次分明,简洁明要,尽量多用print查看数据对错。
【代码】

import json 
import requests
import os
from bs4 import BeautifulSoup
durl="http://imgoss.cnu.cc/" #这个是云台的所有图片的前缀链接

    #进行简单的网页爬取
def get_image_url():
    url="http://www.cnu.cc/works/391714" #进行目标网址的解析 
    return requests.get(url).text

    #图片网址搜索
def get_image_urls(html_text):
    urls=[]     #定义空数组存储
    soup=BeautifulSoup(html_text,'html.parser') #进行网页解析
    div_img=soup.find('div',{'id':'imgs_json'}).text    #进行查找目标json数据
    div_imgs=json.loads(div_img)    #进行数据的转换 转换成json
    for img_list in div_imgs:
        urls.append(durl+img_list['img'])   #进行数据的存储到urls append进行追加复制的作用
    return urls

    #保存成图片样式 
def save_images(dir,urls):
    if not os.path.exists(dir):     #进行数据存储
        os.makedirs(dir)
    count=1     #记数
    for url in urls:
        print("正在下载第{}张图片".format(count))
        ext=url.split('.')[-1]  #扩展名的截取
        filename=dir+'/'+str(count)+'.'+ext     #图片的路径
        content=requests.get(url).content   #进行二进制编写
        with open(filename,'wb') as f:
            f.write(content)
        count+=1
        
if __name__=='__main__':
    html_text=get_image_url()
    image_urls=get_image_urls(html_text)
    save_images('./images',image_urls)

在这里插入图片描述
目标分析
以下是我对此代码简要分析
首先按F12
在这里插入图片描述
初级的小白应该知道了用BeautifulSoup进行解析寻找到在div标签id="work_body"这个进行div_img.find(img)就大功告成了。
可是万万没有想到,当你查看网页源码的时候,却找不到这个img所对的图片,这个时候你一定很不开心。
在一个非常热爱python的进价大佬面前这个只是小事。
我们进行查看源码的时候出现了这个画面
在这里插入图片描述

json数据处理

div_img=soup.find('div',{'id':'imgs_json'}).text    #进行查找目标json数据
    div_imgs=json.loads(div_img)    #进行数据的转换 转换成json
    for img_list in div_imgs:
        urls.append(durl+img_list['img'])   #进行数据的存储到urls append进行追加复制的作用

记住当自己不确定的时候,多用print(type(变量))查看它的属性。
存储阶段

def save_images(dir,urls):
    if not os.path.exists(dir):     #进行数据存储
        os.makedirs(dir)
    count=1     #记数
    for url in urls:
        print("正在下载第{}张图片".format(count))
        ext=url.split('.')[-1]  #扩展名的截取
        filename=dir+'/'+str(count)+'.'+ext     #图片的路径
        content=requests.get(url).content   #进行二进制编写
        with open(filename,'wb') as f:
            f.write(content)
        count+=1

上面的数据就是简单的存储套用就行了

人生苦短 我用python

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值