如何爬取花瓣网下一页图片的max值?

花瓣网图片爬取:高效获取下一页图片

本文介绍如何高效爬取花瓣网图片,特别是解决新版花瓣网下一页max值获取的问题。

如何爬取花瓣网下一页图片的max值?

挑战: 新版花瓣网的图片API返回的JSON数据结构变化,直接获取下一页所需max值变得困难。

解决方案: 利用正则表达式解析JSON数据,提取最后一个pin_id作为下一页的max值。

代码实现: 以下代码基于Python,利用requests库获取数据,re库进行正则匹配,并处理图片下载。

import reimport timeimport jsonimport requestsimport osheaders = {    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}directory = input('请输入文件夹名称:n')fileName = 'huabanimg/' + directory + '/'if not os.path.exists(fileName):    os.makedirs(fileName)board_id = int(input('请输入花瓣board ID:n'))url = f'https://api.huaban.com/boards/{board_id}/pins?limit=20'while True:    response = requests.get(url, headers=headers)    jsondata = response.json()  # 直接使用json.loads()解析json数据,避免使用正则表达式    pins = jsondata['pins']    if not pins:  # 检查是否有图片数据        break    for pin in pins:        key = pin['key']        img_url = f'https://hbimg.huabanimg.com/{key}_fw658'        img_name = key[:10]        print(f'正在下载:{img_name}.jpeg')        try:            img_data = requests.get(img_url, headers=headers).content            with open(fileName + img_name + '.jpeg', 'wb') as f:                f.write(img_data)        except Exception as e:            print(f"下载图片{img_name}失败: {e}")        time.sleep(2)    # 获取下一页的max值, 使用更简洁的JSON解析方式    if jsondata['next']:        url = jsondata['next']    else:        breakprint('图片下载完成!')

改进说明:

直接JSON解析: 代码改进了max值获取方式,直接使用response.json()解析JSON数据,并从jsondata['next']中获取下一页URL,避免了使用正则表达式,提高了代码的可读性和健壮性。错误处理: 添加了try...except块来处理潜在的网络错误或图片下载失败的情况。更清晰的代码结构: 代码结构更加清晰,更易于理解和维护。更友好的用户交互: 提示信息更加友好。

此改进后的代码更稳健,更易于理解和维护,推荐使用。 记住替换board_id为你想要爬取的花瓣board的ID。 请遵守花瓣网的robots.txt和使用规范,避免对服务器造成过大压力。

以上就是如何爬取花瓣网下一页图片的max值?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1356682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 20:02:15
下一篇 2025年12月13日 20:02:25

相关推荐

发表回复

登录后才能评论
关注微信