用javascript协助导入图片

用javascript协助导入图片

需求

先说说需求。春节回家见爸妈,老爸迷上了摄影。他把平时的照片都上传到了 成都图片网, 这个成都图片网专门有一个 “快拍成都” 的版块,用于大家将随手拍的生活中的图片分享上去。每天编辑还会选出一张最有特色的图片,刊登到《成都商报》上。

快拍成都版块的网址是:http://photo.chengdu.cn/diary.php,另外,这个成都图片网还带有一个 “ 拍客论坛 “,论坛的网址是:http://photo.chengdu.cn/bbs/

老爸在兴奋地给我介绍完他的光辉成果之后 , 提出了他的需求:他希望在 “快拍成都” 发完图片后,能够自动将图片保存到他在 “ 拍客论坛 “ 上的 “个人相册” 中。

调研

简单研究了一个这个网站。明显这个网站自带的论坛是改的别人的开源系统,而 “快拍成都” 这个功能由于需求比较特别,能看出来是另外开发的另一套系统。这 2 套系统仅仅是将用户个人认证功能合在一起。并没有实现图片从 “快拍成都” 导入到 “论坛相册” 的功能。所以说,只能自己想办法实现了。要么全部手工弄一遍,要么写程序来做。

简单尝试了一下手工 copy,发现完全不可行,主要是图片介绍的文字是用 css 来排版到一起的,如果单纯复制文字出来,文字的顺序会乱掉。所以只能编程搞了。

我们需要用编程实现的技术步骤很简单:

  1. 模拟登陆到快拍成都。
  2. 从个人页面中点击 “我的作品”,查看自己的作品列表。
  3. 将自己的作品列表中的每一个作品中,包括的所有图片及相对应的介绍文字都下载下来。
  4. 模拟登陆到 “ 拍客论坛 “中。
  5. 对于每一个作品,在论坛的相册中建立一个对应的相册,然后将对应的图片上传上去,并且配上对应的文字。

技术方案

其实我最熟的语言是 Java,但是如果用 Java 来做这件事情的话,我需要:

  1. 了解登陆的 Form,模拟浏览器进行登陆过程,然后保存登陆成功后的 Cookie.
  2. 模拟各种网页请求,将对应的页面内容抓取过来。
  3. 解析 html 内容,用正则表达式匹配到图片的 url 和介绍文字的内容。然后把这些都保存下来。
  4. 了解拍客论坛这个 bbs 的相应 Form 的内容,模拟上传图片和介绍。

这些步骤比较麻烦,而且有些做得好的网站,为了防止模拟登陆,通常在登陆前会执行一段混淆的 javascript,把 Form 中的用户名和密码进行进一步的加工再 POST 到服务器上。考虑到这个网站是改的开源的 bbs,可能会有相应的功能。那这样的话我还需要看 js 的代码,了解它又做了哪些事,把对应的逻辑用 Java 实现了。

每种语言都有它擅长的地方,对于网页来说,最方便处理的当然是 Javascript 了。如果用 Javascript,上面的那些麻烦的步骤都可以省略掉了。于是最后,我写了 2 段 Javascript 来处理这个工作。

第一段 Javascript,取出相应的图片 url 和介绍文字,生成第二个 Javascript 代码

var ps = $(‘.lazyload‘);var ts = $(‘h5‘);for (var i = 0; i < ps.length; ++i) {   console.log($(ps[i]).attr(‘original‘));  }console.log($($(‘h2‘)[0]).text());console.log(‘‘);

for (var i = 0; i < ps.length; ++i) {   console.log(‘document.getElementsByTagName("textarea")[‘ + i + ‘].value="\\‘);   console.log(" 图片属性:" + $(ts[i*2]).find(‘p‘).text() + ‘\\‘);   console.log(" 图片描述:" + $(ts[i*2+1]).find(‘p‘).text() + ‘";‘);}

第二段 Javascript 由第一段 Js 生成,用于在论坛相册中将对应图片的介绍文字填上。

有了上面的那段 JS,我导照片的步骤如下:

  1. 打开 “快拍成都” 的页面,找到需要导出的照片专题。
  2. 执行我上面提到的那段 js,它会将需要下载的图片列出来,并且生成另一段 js.
  3. 手工下载上面列出来的图片到本地。
  4. 在论坛的个人相册中,把这些图片选择上传上去,然后执行生成的另一段 js,图片介绍就会自动填上了。

本来上传图片这一步也应该自动完成的,但是我无法解决浏览器对于 js 的限制:浏览器不允许 js 帮用户选择本地文件。所以这一步只能用手动来完成。

导图片的工作最终在 js 脚本的协助下,花了 1 个半小时完成了。不过心里还是有点不爽,听 zyc 说可以用 nodejs 和 jsdom 来在命令行中模拟浏览器相关的功能,所以打算试试把这个工作用 nodejs 和 jsdom 来完成。正在研究中,完成后再写一篇总结的博客。

时间: 2024-08-27 03:14:14

用javascript协助导入图片的相关文章

JavaScript实现判断图片是否加载完成的3种方法整理

JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示效果.本文主要整理了几种常见的javascipt判断图片加载完成时的方法,并通过代码与实际应用相结合进行解释与说明. onload方法 通过向img标签添加onload属性,并填入相应的函数来执行后续的javascipt代码.如下代码例子中img元素默认是不显示的,通过onload判断加载完成后再将

关于&lt;img&gt;导入图片下面有空白的问题解决方案

上图代码,在网页中导入图片后下面会有一小段空白.在谷歌浏览器调试的时候,会发现外面的包裹层<a>元素的height要比<img>的height多了3个像素(此时已经设置了a{display:block;}).这在网页设计中比较令人头疼,有时候会因为这样一个小空白导致图片无法对齐等等.当然,也有人说 分析原因:知乎上有篇文章讲得很不错.链接:http://www.zhihu.com/question/21558138/answer/18615056 要理解这个问题,首先要弄明白CSS

每天一个JavaScript实例-判断图片是否加载完成

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>每天一个JavaScript实例-判断图片是否加载完成</title> <script> window.onload= function(){ //clearTimeout(clock); alert("加载完成"); } v

教你导入图片到几何画板中

用几何画板软件制作课件时,往往需要导入几何画板以外的美丽图片来提高课件的质量.下面介绍几何画板导入图片的方法. 一.粘贴的方法 把所需的图片复制到Windows的剪贴板上,再利用几何画板中"编辑"菜单中的"粘贴图片"命令直接导入一幅图片到课件中:或者右键单击画板中空白处,粘贴图片. 二.直接将图片拖进画板 保存好图片后,用鼠标选中图片,拖动图片到画板中. 三.使用快捷键 复制图片之后,在画板界面中按Ctrl+V. 提示:若要使导入的图片参与动画运动,可以先选中一点,

JavaScript实现简单图片滚动 --9张图告诉你,C罗欲哭无泪

源码下载:http://download.csdn.net/detail/u011043843/7510425 昨晚德国和葡萄牙的焦点之战你看了吗?北京时间凌晨的比赛中,C罗领衔的葡萄牙0-4德国被完灭--他是金球奖得主.欧洲金靴.欧冠冠军核心,在葡萄牙队--9张图 C罗告诉你什么叫欲哭无泪 <span style="font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio

[转]iOS:批量导入图片和视频到模拟器的相册

IOS开发中我们经常会用到模拟器调试,模拟器有个主要的好处就是程序启动块,最重要的是如果没有证书的话,我们就只能在模拟器上调试了.使用模拟器调试时我们可能碰到需要从系统相册选择图片的情况,特别是做图片处理类相关的程序时,更是经常用到. 初始化情况下模拟器中的相册中是空的,所以要想选择,我们就得先导入一些图片.通常的做法是将图片直接拖拽到模拟器上,然后模拟器就会用safari打开,这个时候我们再长按图片就会弹出保存到系统相册的菜单了,这样一个完整的图片保存流程就完成了.但是这中方法有一个明显的缺点

教你几何画板如何导入图片

用几何画板软件制作课件时,往往需要导入几何画板以外的美丽图片来提高课件的质量.下面介绍几何画板导入图片的方法. 一.粘贴的方法 把所需的图片复制到Windows的剪贴板上,再利用几何画板中“编辑”菜单中的“粘贴图片”命令直接导入一幅图片到课件中:或者右键单击画板中空白处,粘贴图片. 二.直接将图片拖进画板 保存好图片后,用鼠标选中图片,拖动图片到画板中. 三.使用快捷键 复制图片之后,在画板界面中按Ctrl+V. 提示:若要使导入的图片参与动画运动,可以先选中一点,然后利用上述方法导入图片.这样

怎么在几何画板中导入图片

几何画板是种常见的课件制作软件,但我们在用几何画板制作课件时,常常需要导入一些漂亮的图片来提高我们课件的质量.下面就给大家介绍几何画板导入图片的方法. 一.粘贴的方法 把所需的图片复制到Windows的剪贴板上,再利用几何画板中“编辑”菜单中的“粘贴图片”命令直接导入一幅图片到课件中:或者右键单击画板中空白处,粘贴图片.  在“编辑”菜单下选择“粘贴图片”命令 二.直接将图片拖进画板 保存好图片后,用鼠标选中图片,拖动图片到画板中. 三.使用快捷键 复制图片之后,在画板界面中按Ctrl+V.  

Unity3d 导入图片 自动修改Texture Type为Sprite (2D and UI) 及设置 Packing Tag为文件夹名

Unity3d 的新版 UI 系统在给我们带来很大便利的同时,也添加了一些小麻烦.每次从电脑中导入图片到 Unity3d 中都需要手动设置Texture Type为Sprite (2D and UI) 及设置 Packing Tag.对于需要打包为一个图集的图片,我们一般把它们放到一个文件夹中. 基于以上,我们可以让图片的 Packing Tag 自动设置为 文件夹的名字. 转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn Uni