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)

python爬取json数据库 python爬取json网页_python爬取json数据库


目标分析

以下是我对此代码简要分析

首先按F12

python爬取json数据库 python爬取json网页_数据_02


初级的小白应该知道了用BeautifulSoup进行解析寻找到在div标签id="work_body"这个进行div_img.find(img)就大功告成了。

可是万万没有想到,当你查看网页源码的时候,却找不到这个img所对的图片,这个时候你一定很不开心。

在一个非常热爱python的进价大佬面前这个只是小事。

我们进行查看源码的时候出现了这个画面

python爬取json数据库 python爬取json网页_python爬取json数据库_03

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