1.疫情居家无聊之人
2.python略懂一点点就行
如果没有下面的头文件不要慌,打开你的python终端pip install +包名即可
from bs4 import BeautifulSoup
import requests
import json
import os
import sys
右键查看网页源代码你会发现编码方式为’GBK’且有个script,省的我们动态获取链接,可以看到petData是一个二维列表,petData[:,1]是图鉴详情页,点进去看如下所示
target = 'http://news.4399.com/seer/jinglingdaquan/'
req = requests.get(target).content.decode('gbk')
html = req
print('开始爬取...')
bf = BeautifulSoup(html)
t = bf.select('body > script') #图鉴页面的详情信息
temp = str(t[0])[22:]
temp = temp[:-12]
lis = json.loads(temp) #str格式的list转list
print('获取图片html...')
length = len(lis)
html_list = []
for i in range(length):
html_list.append(lis[i][1]) #把详情url先存起来
print('载入成功,准备保存...')
先用html_list存储详情页的url,当然可以直接进行下面的转换不用先存
F12选中图片发现图片url竟在之中,get后保存本地即可,保存函数如下
def save_img(name,url): # 保存图片
img = requests.get(url)
f = open(name, 'ab')
f.write(img.content)
print(name, '文件保存成功!')
f.close()
dirname = input('请输入存图片的文件夹名')
flag = os.path.exists('./'+dirname)
if not flag:
os.makedirs('./'+dirname)
else:
print('当前文件夹下有同名目录')
for i in range(length):
temp = requests.get(html_list[i]).content.decode('gbk')
temp_bf = BeautifulSoup(temp)
img = temp_bf.select('#state > div.focus.cf > div:nth-child(2) > img')
lis_img = str(img).split('"')
save_img('./'+dirname+'/'+lis_img[1]+'.jpg',lis_img[3])
now = os.getcwd()
print('爬取完毕!存于'+str(now)+'/'+str(dirname))
当然你们可以不看博客直接复制下面的代码
from bs4 import BeautifulSoup
import requests
import json
import os
import sys
def save_img(name,url): # 保存图片
img = requests.get(url)
f = open(name, 'ab')
f.write(img.content)
print(name, '文件保存成功!')
f.close()
target = 'http://news.4399.com/seer/jinglingdaquan/'
req = requests.get(target).content.decode('gbk')
html = req
print('开始爬取...')
bf = BeautifulSoup(html)
t = bf.select('body > script')
temp = str(t[0])[22:]
temp = temp[:-12]
lis = json.loads(temp)
print('获取图片html...')
length = len(lis)
html_list = []
for i in range(length):
html_list.append(lis[i][1])
print('载入成功,准备保存...')
dirname = input('请输入存图片的文件夹名')
flag = os.path.exists('./'+dirname)
if not flag:
os.makedirs('./'+dirname)
else:
print('当前文件夹下有同名目录')
#sys.exit(0)
for i in range(967,length):
print(i,end = '')
try: #用于爬取精灵(多形态需要额外判断select条件,我懒),有些不符合的get请求结果直接跳过
temp = requests.get(html_list[i]).content.decode('gbk')
temp_bf = BeautifulSoup(temp)
img = temp_bf.select('#state > div.focus.cf > div:nth-child(2) > img')
lis_img = str(img).split('"')
save_img('./'+dirname+'/'+lis_img[1]+'.jpg',lis_img[3])
except:
continue
now = os.getcwd()
print('爬取完毕!存于'+str(now)+'/'+str(dirname))
几个注意的地方:
1.这里的切片位置可能会变,你可以选择更加智能的切片,当然,是因为我懒。
2.这里的select,推荐EDGE浏览器F12选中目标标签,右键复制SELECT即可
3.为什么要爬赛尔号图鉴呢?
吃饱了撑的,当然不是,准备搭建简易生成对抗网络就叫它SEERGAN吧(手动滑稽)随机生成精灵,效果好的话就好玩了。