因为花瓣网图片是js动态加载的,而且还是下拉加载,简单的通过查找<img>标签便不是很可行了。
所以最好的方法是分析url,分多次请求;这里面的分析参考http://blog.chinaunix.net/uid-23500957-id-3878770.html
程序实现思路如下:
1.首先访问某一画板主页,例如http://huaban.com/boards/18484185/
2.得到网页源码(不执行js)后,一般有20张图片的信息,存在这么一个json数据里
app.page["board"] = {"board_id":18484185, "user_id":16352918, "title":"可爱动漫", "description":"", "category_id":"anime", "seq":2, "pin_count":178, "follow_count":50, "like_count":1, "created_at":1415945887, "updated_at":1419412105, "deleting":0, "is_private":0, "extra":null, "user":{"user_id":16352918, "username":"爱吃饭团的小小泽", "urlname":"jbnihpdw84", "created_at":1415945122, "avatar":{"id":63028007, "farm":"farm1", "bucket":"hbimg", "key":"31ccfe5585d691cd7b6d48959397eec51daf5bae1d7b6-G3Fatz", "type":"image/jpeg", "width":720, "height":960, "frames":1}, "pin_count":3643, "board_count":67, "like_count":2, "follower_count":300, "creations_count":0, "boards_like_count":0, "following_count":83, "commodity_count":15, "profile":{"location":"", "sex":"0", "birthday":"", "job":"", "url":"", "about":""}, "status":{"emailvalid":false, "newbietask":0, "lr":1421675510, "invites":0, "share":"0"}}, "category_name":"动漫", "following":false, "liked":false, "pins":[{"pin_id":297911086, "user_id":16352918, "board_id":18484185, "file_id":65136253, "file":{"farm":"farm1", "bucket":"hbimg", "key":"8b5906dc77a84e6bdbdfda7d882378dfb3e8401724273-RFklTX", "type":"image/jpeg", "width":1024, "height":1575, "frames":1, "theme":"FAF8F0"}, "media_type":0, "source":"donmai.us", "link":"http://donmai.us/posts/1880339?tags=touhou", "raw_text":"#东方project#\n#娜兹玲#", "text_meta":{"tags":[{"start":0, "offset":11}, {"start":12, "offset":5}]}, "via":297275179, "via_user_id":6303198, "original":297275179, "created_at":1419412104, "like_count":0, "comment_count":0, "repin_count":2, "is_private":0, "orig_source":null, "hide_origin":false}, {"pin_id":297910029, "user_id":16352918, "board_id":18484185, "file_id":65137757, "file":{"farm":"farm1", "bucket":"hbimg", "key":"67f6920b0f1cc039c251b3a4d467b27464830fcc5240b-SC07Pk", "type":"image/jpeg", "width":621, "height":869, "frames":1, "theme":"F6EADB"}, "media_type":0, "source":"pixiv.net", "link":"http://www.pixiv.net/member_illust.php?mode=medium&illust_id=47696761", "raw_text":"#东方project#\n#今泉影狼##博丽灵梦##雾雨魔理沙#うちの子。", "text_meta":{"tags":[{"start":0, "offset":11}, {"start":12, "offset":6}, {"start":18, "offset":6}, {"start":24, "offset":7}]}, "via":297288273, "via_user_id":6303198, "original":297288273, "created_at":1419412016, "like_count":0, "comment_count":0, "repin_count":28, "is_private":0, "orig_source":null, "hide_origin":false}, ...
3.我们用如下正则表达式,提取图片的pinId,图片的key(用于得到图片的地址),图片类型
private List<Img> parsePinsFromXml(String xmlStr) {
List<Img> pins = new ArrayList<Img>();
String pattern = "\\{\"pin_id\":(\\d+),.+?\"key\":\"(.+?)\",.\"type\":\"image/(.+?)\",";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(xmlStr);
while (m.find()) {
Img pin = new Img();
System.out.println(m.group());
pin.setPinId(m.group(1));
pin.setKey(m.group(2));
pin.setType(m.group(3));
pins.add(pin);
System.out.println(pin.getPinId()+","+pin.getKey()+","+pin.getType());
}
return pins;
}
4.一般返回的是20个pin,我们选取最后一个pinId,使用如下url继续访问网站,获取接下来的20个pin,直至得到所有的pin,或是无法获得更多的pin
url = this.boardUrl + "?max=" + img.getPinId() + "&limit=20&wfl=1";
其中,boardUrl = "http://huaban.com/boards/18484185/"
5.到这一步,已经有所有图片的key值了
例如,31ccfe5585d691cd7b6d48959397eec51daf5bae1d7b6-G3Fatz
再两端分别加上"http://img.hb.aicdn.com/"与"_fw658"即可得到大图地址
6.到这儿就不用多说了,根据图片url把图片下载到指定位置即可
最终下载到的图片:
所附jar,需运行在jre8.0上

- 大小: 27.7 KB

- 大小: 34.1 KB

- 大小: 58.1 KB

- 大小: 453.2 KB
分享到:
相关推荐
在花瓣网的例子中,抓取到的图片链接会被发送到下载器,然后保存到指定的本地路径。 10. **文件组织**:项目中提到的"huaban2"可能是Scrapy项目的文件夹结构,通常包括settings.py(配置文件)、items.py(定义Item...
【标题】:“bidcms开源图片分享”是一款基于开源框架构建的图片分享平台,旨在模仿花瓣网的功能和用户体验,为用户提供一个收集、分享和发现创意图片的在线社区。 【描述】:该程序允许用户轻松上传、整理和分享...
在这个名为“Python爬虫Huaban.zip”的压缩包中,我们可以推测它包含了一个用于从花瓣网(Huaban.com)抓取图片的Python爬虫项目。花瓣网是一个设计灵感分享平台,用户可以收藏并分类各种高质量的图片。 Python在...
该代码使用scikit-learn的乳腺癌数据集,完成分类模型训练与评估全流程。主要功能包括:数据标准化、三类模型(逻辑回归、随机森林、SVM)的训练、模型性能评估(分类报告、混淆矩阵、ROC曲线)、随机森林特征重要性分析及学习曲线可视化。通过`train_test_split`划分数据集,`StandardScaler`标准化特征,循环遍历模型进行统一训练和评估。关键实现细节包含:利用`classification_report`输出精确度/召回率等指标,绘制混淆矩阵和ROC曲线量化模型效果,随机森林的特征重要性通过柱状图展示,学习曲线分析模型随训练样本变化的拟合趋势。最终将原始数据和预测结果保存为CSV文件,便于后续分析,并通过matplotlib进行多维度可视化比较。代码结构清晰,实现了数据处理、模型训练、评估与可视化的整合,适用于乳腺癌分类任务的多模型对比分析。
内容概要:本文作为PyTorch的入门指南,首先介绍了PyTorch相较于TensorFlow的优势——动态计算图、自动微分和丰富API。接着讲解了环境搭建、PyTorch核心组件如张量(Tensor)、autograd模块以及神经网络的定义方式(如nn.Module),并且给出了详细的神经网络训练流程,包括前向传播、计算损失值、进行反向传播以计算梯度,最终调整权重参数。此外还简要提及了一些拓展资源以便进一步探索这个深度学习工具。 适用人群:初次接触深度学习技术的新学者和技术爱好者,有一定程序基础并希望通过PyTorch深入理解机器学习算法实现的人。 使用场景及目标:该文档有助于建立使用者对于深度学习及其具体实践有更加直观的理解,在完成本教程之后,读者应当能够在个人设备上正确部署Python环境,并依据指示独立创建自己的简易深度学习项目。 其他说明:文中所提及的所有示例均可被完整重现,同时官方提供的资料链接也可以方便有兴趣的人士对感兴趣之处继续挖掘,这不仅加深了对PyTorch本身的熟悉程度,也为未来的研究或者工程项目打下了良好的理论基础和实践经验。
此高校心理教育辅导系统功能分析主要分为管理员功能模块、教师功能模块和学生功能模块三大模块,下面详细介绍这三大模块的主要功能: (1)管理员:管理员登陆后可对系统进行全面管理,管理员主要功能模块包括个人中心、学生管理、教师管理、辅导预约管理、学生信息管理、测评结果分析管理、心理健康学习管理、试题管理、留言板管理、试卷管理、系统管理以及考试管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。管理员用例图如图3-1所示。(2)学生:学生进入本高校心理教育辅导系统前台可查看系统信息,包括首页、心理健康信息、试卷列表、公告通知以及留言反馈等,注册登录后主要功能模块包括个人中心、辅导预约管理以及考试管理。(3)教师:教师学生登录后主要实现的功能模块包括个人中心、辅导预约管理、学生信息管理、测试结果分析管理、心理健康学习管理、试卷管理、试题管理、留言板管理、考试管理。Spring Boot是一个简化程序设置的拥有开箱即用的框架,它主要的优点是根据程序员不同的设置而生成不同的代码配置文件,这样开发人员就不用每个项目都配置相同的文件,从而减低了开发人员对于传统配置文件的时间,提高了开发效率。它内
网络文化互动中的虚拟现实技术应用
自驾游中如何预防迷路情况
实现多人聊天的客户端小程序
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
漫画中的文化元素挖掘
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
,,Qt源程序~界面设计例程(XML文件读取+滚动区域放置控件+保存多sheetExcel文件) IDE版本: Qt creator 4.8.0 Qt 5.12.0 代码特点: 1.能读取xml格式文件,并通过其配置界面; 2.能在滚动区域内放置多种控件,界面大小不够会出现滚动条来扩展界面; 3.能通过xml配置文件初始化联动的单选框,输入框和表格; 4.通过程序动态新建单选框,输入框和表格; 5.将表格保存为Excel文件,每个表格就是一个sheet。 视频不够清晰,请上B站看: 【Qt例程:界面设计项目(XML文件读取+滚动区域放置控件+保存Excel文件)- ,Qt源程序; XML文件读取; 滚动区域放置控件; 保存多sheet Excel文件; Qt Creator 4.8.0; Qt 5.12.0; 动态创建控件; 界面设计例程。,Qt程序进阶:XML文件读取与处理,滚动区域控件布局,多sheet Excel文件保存功能
,,FPGA 以太网 UPD IP 协议实现 fpga 千兆以FPGA 以太网 UPD IP 协议实现 fpga 千兆以FPGA 以太网 UPD IP 协议实现, fpga 千兆以太网接口控制器,FPGA UDP IP协议实现 在FPGA上实现UDP通信,Verilog HDL描述语言实现,数据链路层,网络层,传输层有纯逻辑实现。 接口为GMII接口,与外部phy对接。 实验器件为s6,因此编译环境用的是ISE14.7。 vivado轻松无压力,随意移植。 ,FPGA; 以太网; UPD; IP协议; 千兆以太网接口控制器; Verilog HDL描述语言; 数据链路层; 网络层; 传输层; 接口为GMII接口; 编译环境为ISE14.7。,基于FPGA的千兆以太网UDP IP协议实现与优化
eclipse-inst-jre-win64.rar
内容概要:本文档详细介绍了一个基于Transformer和BiLSTM双向长短期记忆神经网络结合贝叶斯优化(BO)进行时间序列预测的项目。该项目主要解决传统方法在处理复杂非线性关系、多变量依赖和大规模数据时存在的局限性,提升预测精度和计算效率。项目通过MATLAB实现完整的程序、GUI设计和详细的代码说明,涵盖数据预处理、模型设计与训练、超参数调优、评估与应用等各个环节。同时探讨了项目的挑战和未来改进方向,为深度学习技术在时间序列预测中的应用提供了实用价值。 适合人群:对时间序列预测感兴趣的研究人员和技术人员,尤其是具有一定深度学习基础并且希望深入了解和实践Transformer、BiLSTM及相关优化技术的专业人士。 使用场景及目标:①为金融、能源、气象等多个领域的实际问题提供时间序列预测解决方案,包括股市预测、电力负载预估等;②提高预测模型的泛化能力和准确性;③优化模型的超参数选取,从而提高训练速度和效率。 其他说明:文中特别强调了数据处理的重要性,如去除噪声、特征选择等问题,并介绍了贝叶斯优化技术的应用,使得模型能够在较少尝试下找到最优配置。同时展示了如何通过图形化界面展示训练过程和评估结果,确保用户体验友好。此外,文档还包括了防止过拟合、提高模型性能的各种技巧,如正则化、早期停止、Dropout等措施。总体而言,本项目致力于提供一套完善的深度学习解决方案,促进跨学科应用和发展。
励志图书中的时间管理、目标设定与自我提升
当前资源包含初中高级闯关习题
亲子自驾游趣味活动推荐