ruby代码

#encoding: utf-8

require 'net/http'
require 'open-uri'
require 'nokogiri' # 用于解析html的模块# sudo apt-get install libxslt-dev libxml2-dev # sudo gem install nokogiri
require 'pathname'class JanDanSpiderattr_accessor :base_uri, :cur_page # 定义属性访问器def initialize(pagesize)@base_uri = 'http://jandan.net/pic' # @表示实例变量、@@表示类变量、$表示全局变量@dir = '/media/Develop/MyCode/SevenLang/ruby/pic'@pagesize = Integer(pagesize) # 整型转换
    enddef crawl()Dir.mkdir @dir unless File.directory? @dir # 表判断的方法结尾都有个?totalpage = crawlpage(0)puts "pagesize #{totalpage}" # ""字符会引发字符串替换,''则不会(1..@pagesize-1).each do |i| # 遍历元组crawlpage(totalpage - i)endputs 'complete!'enddef crawlpage(page)url = page==0 ? @base_uri : @base_uri+'/page-'+page.to_s # to_s是必要的puts "crawl-page: #{url}"fpage = open(url)html = fpage.readdoc = Nokogiri::HTML(html)doc.css('ol.commentlist li').each { |comment|match = /comment-(\d+)/.match(comment['id'])if matchid = match[1]oo = Integer(comment.css('#cos_support'+'-'+id)[0].content);xx = Integer(comment.css('#cos_unsupport'+'-'+id)[0].content);xx = 1 if xx==0if(oo>xx && (oo>200 || oo/xx >10) )src = comment.css('p img')[0]["src"]puts "crawl: oo #{oo} xx #{xx} src #{src}"save_pic(src)endend}if page==0cur_page = doc.css(".current-comment-page")[0].contentpage = Integer(/\d+/.match(cur_page).to_s)endputs "page #{page} done!"page # ruby中每条语句都有返回值,函数内最后一条语句的返回值会被return
    enddef save_pic(url)urlpath = Pathname.new(url)filename = urlpath.basename.to_sdirpath = Pathname.new(@dir)filepath = dirpath.join(filename).to_sopen(url) { |fin|open(filepath,"wb") { |fout|while buf = fin.read(4096) dofout.write bufend}} unless File.exists? filepath # 仅当文件不存在时进行抓取puts 'done!'endendif ARGV.length == 1spider = JanDanSpider.new($*[0]) # 可从 ARGV 或 $* 读取命令行参数
    spider.crawl()
elseputs 'please input pagesize' #tip: puts, 转义+换行符 print, 转义 p, 换行
end

python

 1 #python-string
 2 #python中的字符串用单引号''和双引号""标示
 3 strA = 'this is a string'
 4 strB = "this is a message!"
 5
 6 #打印两个字符串
 7 print("打印两个字符串")
 8 print('strA = ' + strA)
 9 print('strB = ' + strB)
10
11 print("#############################")
12
13 strC = 'I don\'t know anything'
14 strD = '\'Yes\',I know.'
15
16 print("字符串中的转移字符")
17 print('strA = ' + strC)
18 print('strB = ' + strD)
19
20 print("#############################")
21
22 strE = '这是我的blog,欢迎大家来\n我的博客园溜达'
23
24 print("字符串中的换行")
25 print('strA = ' + strE)
26
27 print("#############################")
28
29 strF = 'this is ''message'
30 strG = 'Hongten'
31 strH = strG * 3
32
33 print('字符串可以用\'+\'号连接(或者说粘合),也可以用\'*\'号循环')
34 print('strF原有形式为:\'this is \'\'message\'')
35 print('粘合后的strF:' + strF)
36 print('strG原值为:\'Hongten\',strH = strG * 3,此时strH为:' + strH)
37
38 print("#############################")
39 strI = 'hongtenzone@foxmail.com'
40
41 print('字符串可以使用下标(索引)查询')
42 print('源字符串strI = \'hongtenzone@foxmail.com\'')
43 print('字符串strI的长度,len(strI) = ')
44 print(len(strI))
45 print('strI[0] = ' + strI[0])
46 print('strI[10] = ' + strI[10])
47 print('strI[-1] = strI[len(strI) - 1]')
48 print('strI[-1] = ' + strI[-1])
49 print('strI[len(strI) - 1] = ' + strI[len(strI) - 1])
50
51 print("#############################")
52
53 print('Python 字符串不能改写。按字符串索引赋值会产生错误:')
54 print('strI[0] = \'x\',这样就会产生错误啦')
55
56 print("#############################")
57
58 print('过大的索引代替为字符串大小,下界比上界大的返回空字符串')
59 print('strI[0:100] = ' + strI[0:100])
60
61 print("#############################")
62
63 print('索引可以是负数,计数从右边开始')
64 print('strI[-2] = ' + strI[-2])
65 print('strI[-23:] = ' + strI[-23:])
66
67 print("#############################")
68
69 print('不过-0 还是0,所以它不是从右边计数的!')
70 print('strI[0] = ' + strI[0])
71 print('strI[-0] = ' + strI[-0])

View Code

java

/** PROXY_HOST:代理的IP地址* PROXY_PORT_INT:代理的端口号*/Proxy proxy=newProxy(Proxy.Type.HTTP, newInetSocketAddress(PROXY_HOST, PROXY_PORT_INT));URL url=newURL(urlStr);URLConnection conn=url.openConnection(proxy);InputStream is=conn.getInputStream();

html5js

/*** 这里只实现垂直滚动*/
var parent = document.getElementById('parent');
var content = document.getElementById('content')
var startY = 0; // 初始位置
var lastY = 0; // 上一次位置parent.addEventListener('touchstart', function(e) {lastY = startY = e.touches[0].pageY;
});
parent.addEventListener('touchmove', function(e) {var nowY = e.touches[0].pageY;var moveY = nowY - lastY;var contentTop = content.style.top.replace('px', '');// 设置top值移动contentcontent.style.top = (parseInt(contentTop) + moveY) + 'px';lastY = nowY;});
parent.addEventListener('touchend', function(e) {// do touchendvar nowY = e.touches[0].pageY;var moveY = nowY - lastY;var contentTop = content.style.top.replace('px', '');// 设置top值移动contentcontent.style.top = (parseInt(contentTop) + moveY) + 'px';lastY = nowY;
});

  

/*** 这里只实现垂直滚动*/
var parent = document.getElementById('parent');
var content = document.getElementById('content')
var startY = 0; // 初始位置
var lastY = 0; // 上一次位置parent.addEventListener('touchstart', function(e) {lastY = startY = e.touches[0].pageY;
});
parent.addEventListener('touchmove', function(e) {var nowY = e.touches[0].pageY;var moveY = nowY - lastY;var contentTop = content.style.top.replace('px', '');// 设置top值移动contentcontent.style.top = (parseInt(contentTop) + moveY) + 'px';lastY = nowY;});
parent.addEventListener('touchend', function(e) {// do touchendvar nowY = e.touches[0].pageY;var moveY = nowY - lastY;var contentTop = content.style.top.replace('px', '');// 设置top值移动contentcontent.style.top = (parseInt(contentTop) + moveY) + 'px';lastY = nowY;
});

转载于:https://www.cnblogs.com/vus520/p/3193605.html

我要搬家到csdn,大家到那里来看我吧,平台更大,看到的人更多!相关推荐

  1. 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang

    博客搬家到CSDN:http://blog.csdn.net/yeweiouyang 转载于:https://www.cnblogs.com/yewei/p/4012571.html

  2. 我的新浪博客搬家到CSDN博客啦!

    我的新浪博客搬家到CSDN博客啦! CSDN上有更专业的专家和技术爱好者,有更好的C/C++.数值算法.混合编程的技术文章,所以我也搬过去跟技术大牛一起住,哈哈,我将在CSDN有个新家啦.

  3. 【成员故事】CSDN邹欣: 2021 年计划把 CSDN 做成中国第一的技术问答平台

    开发者生态英雄会简介: 由CSDN发起,面向开发者生态相关从业者,包括但不限于技术品牌.开发者关系拓展.生态拓展等.技术布道师.社区运营等,共同交流学习如何做好生态运营,资源互助的社区. 加入开发者英 ...

  4. 【成员故事】CSDN邹欣: 2021 年计划把 CSDN 做成中国第一的技术问答平台

    开发者生态英雄会简介: 由CSDN发起,面向开发者生态相关从业者,包括但不限于技术品牌.开发者关系拓展.生态拓展等.技术布道师.社区运营等,共同交流学习如何做好生态运营,资源互助的社区. 加入开发者英 ...

  5. 博客搬家——从CSDN到博客园

    前言 作为CSDN五年的老用户,现在不得不做出一个艰难的决定--博客搬家.原博客地址:http://blog.csdn.net/zouyujie1127/ 其实在博客园注册已经两年多了,只是因为大学时 ...

  6. 下定决心博客搬家(再见csdn,For my oschina!)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. ta ...

  7. 我的ITEYE搬家到csdn

    我之前的博客是http://1509930816.iteye.com/ 您好!感谢您对CSDN博客的认可和支持,申请博客搬家请填写下面的表格,我们将发送博客搬家邀请码到您的邮箱. CSDN博客搬家功能 ...

  8. 从博客园搬家到csdn并能两边同步更新的方法

    之前一直在博客园写文章分享,但是文章访问量一直上不去,就想着多个平台刷一下访问量 于是选择了csdn csdn是有博客搬家功能 https://mp.csdn.net/mp_blog/tools/mo ...

  9. 我要搬家到CSDN了,好吧

    好人一生平安 转载于:https://blog.51cto.com/5324257/1070418

最新文章

  1. java list主要实现_java容器-list的常用实现及原理
  2. hdu 2544 dijkstra
  3. 2020牛客暑期多校训练营(第二场)Just Shuffle
  4. Linux 驱动开发之内核模块开发 (三)—— 模块传参
  5. react之使用js创建虚拟DOM
  6. 8个球放入3个盒子方式_颜值与美味并存~分享几款私房盒子蛋糕做法,再也不用排队买了...
  7. 【java】两个线程如何交替执行,一个输出偶数一个输出奇数?
  8. VC菜菜鸟-创建一个简单的多线程任务
  9. VC6.0 Raising Error spawning cl.exe solution
  10. 2021-09-08 全排列
  11. 微信小程序视频直播开发实现流程
  12. java数字转读音_java 数字转汉语读音的程序
  13. 叉乘点乘混合运算公式_小学数学所有公式和顺口溜都在这里了,考试肯定能用到!...
  14. 深度linux64位系统下载,深度 Deepin 15.9 操作系统下载
  15. 服务器设置temp文件夹权限,服务器windows temp 权限设置
  16. Excel:单元格提取数字,并求和
  17. IO多路复用之epoll总结 http://www.cnblogs.com/Anker/archive/2013/08/17/3263780.html
  18. java实现踢下线用户_浅谈踢人下线的设计思路!(附代码实现方案)
  19. LaTeX—如何把论文模板的关键词从Index Terms 改为Keywords
  20. python PDF文档

热门文章

  1. 香港理工大学人工智能设计实验室 博士后 招聘
  2. 视频增强之“动态范围扩展”HDR技术漫谈
  3. 妙笔生花!文字图像图形生成技术研究进展
  4. 推特超2K赞,DeepMind强化学习综述:她可以很快,但快从慢中来
  5. 医疗设备-呼吸机-数据解析
  6. 小米3Android密码怎么解吗,小米路由器3管理密码忘记了怎么办?
  7. 收藏 | 机器学习、深度学习调参手册
  8. 人工智能发展趋势——深度AI科普调研团队
  9. linux 缩小链接库体积,两个奇技淫巧,将 Docker 镜像体积减小 99%
  10. stm32驱动_STM32直流电机启动(一)驱动电路的介绍