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