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

python

 #python-string
#python中的字符串用单引号''和双引号""标示
strA = 'this is a string'
strB = "this is a message!" #打印两个字符串
print("打印两个字符串")
print('strA = ' + strA)
print('strB = ' + strB) print("#############################") strC = 'I don\'t know anything'
strD = '\'Yes\',I know.' print("字符串中的转移字符")
print('strA = ' + strC)
print('strB = ' + strD) print("#############################") strE = '这是我的blog,欢迎大家来\n我的博客园溜达' print("字符串中的换行")
print('strA = ' + strE) print("#############################") strF = 'this is ''message'
strG = 'Hongten'
strH = strG * 3 print('字符串可以用\'+\'号连接(或者说粘合),也可以用\'*\'号循环')
print('strF原有形式为:\'this is \'\'message\'')
print('粘合后的strF:' + strF)
print('strG原值为:\'Hongten\',strH = strG * 3,此时strH为:' + strH) print("#############################")
strI = 'hongtenzone@foxmail.com' print('字符串可以使用下标(索引)查询')
print('源字符串strI = \'hongtenzone@foxmail.com\'')
print('字符串strI的长度,len(strI) = ')
print(len(strI))
print('strI[0] = ' + strI[0])
print('strI[10] = ' + strI[10])
print('strI[-1] = strI[len(strI) - 1]')
print('strI[-1] = ' + strI[-1])
print('strI[len(strI) - 1] = ' + strI[len(strI) - 1]) print("#############################") print('Python 字符串不能改写。按字符串索引赋值会产生错误:')
print('strI[0] = \'x\',这样就会产生错误啦') print("#############################") print('过大的索引代替为字符串大小,下界比上界大的返回空字符串')
print('strI[0:100] = ' + strI[0:100]) print("#############################") print('索引可以是负数,计数从右边开始')
print('strI[-2] = ' + strI[-2])
print('strI[-23:] = ' + strI[-23:]) print("#############################") print('不过-0 还是0,所以它不是从右边计数的!')
print('strI[0] = ' + strI[0])
print('strI[-0] = ' + strI[-0])

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值移动content
content.style.top = (parseInt(contentTop) + moveY) + 'px';
lastY = nowY; });
parent.addEventListener('touchend', function(e) {
// do touchend
var nowY = e.touches[0].pageY;
var moveY = nowY - lastY;
var contentTop = content.style.top.replace('px', '');
// 设置top值移动content
content.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值移动content
content.style.top = (parseInt(contentTop) + moveY) + 'px';
lastY = nowY; });
parent.addEventListener('touchend', function(e) {
// do touchend
var nowY = e.touches[0].pageY;
var moveY = nowY - lastY;
var contentTop = content.style.top.replace('px', '');
// 设置top值移动content
content.style.top = (parseInt(contentTop) + moveY) + 'px';
lastY = nowY;
});

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

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

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

  2. 搬家至csdn

    搬家至csdn https://blog.csdn.net/qq_42866164

  3. 96、搬家到csdn

    大家好: 今天开始会将所有的博客搬家到CSDN,以后请参考CSDN上的博客:http://blog.csdn.net/u012416045 谢谢 维真

  4. 原创内容搬家到csdn博客啦~

    以后原创的文章就发布在csdn博客啦: http://blog.csdn.net/aceyan0718 这里就用来当作一个网络笔记本吧,转载些优质的内容

  5. 将搬家至CSDN

    emmm,感觉没利用好博客,自己也弄了一个github上面的hexo博客https://clarkkun.github.io/,但是死活传不上去内容,尴尬 ̄□ ̄||,三个博客齐头并进吧

  6. JVM原理和优化

    JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界 ...

  7. jvm 原理和优化

    在csdn 上看到的,觉得很好,收藏了: 原博文地址: 濤子 http://blog.csdn.net/ning109314/article/details/10411495/ JVM工作原理和特点主 ...

  8. JVM知识学习与巩固

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 我们运行和调 ...

  9. TCP/IP 三次握手和四次握手

    三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己 ...

随机推荐

  1. 定制库到maven库

    有一些jar不支持maven,这个时候就可以使用下面的处理方式. kaptcha,它是一个流行的第三方Java库,它被用来生成 “验证码” 的图片,以阻止垃圾邮件,但它不在 Maven 的中央仓库中. ...

  2. numpy np.newaxis 的实用

    >> type(np.newaxis) NoneType >> np.newaxis == None True np.newaxis 在使用和功能上等价于 None,其实就是 ...

  3. pyrhon SQLite数据库

    pyrhon SQLite数据库 目录 介绍 导入模块 创建数据库/打开数据库 创建表 在表中插入行 查询/修改 删除表中的行 删除表 介绍 Python SQLITE数据库是一款非常小巧的嵌入式开源 ...

  4. Java中十个常见的违规编码

    摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助Java爱好者提高代码的质量和可维护性. 最近, ...

  5. UltraISO制作U盘启动盘安装Win7系统攻略

    reference win 7 iso name: cn_windows_7_ultimate_x86_dvd_x15-65907.iso URL FOR download: http://jingy ...

  6. C语言上机练习二

    #include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) printf(& ...

  7. [BZOJ3451][Tyvj1953]Normal(点分治+FFT)

    https://www.cnblogs.com/GXZlegend/p/8611948.html #include<cmath> #include<cstdio> #inclu ...

  8. POJ.3537.Crosses and Crosses(博弈论 Multi-SG)

    题目链接 \(Description\) 有一个一行n列的棋盘,每个人每次往上放一个棋子,将三个棋子连在一起的人赢.问是否有必胜策略. \(Solution\) 首先一个人若在\(i\)处放棋子,那么 ...

  9. 潭州课堂25班:Ph201805201 爬虫基础 第十课 图像处理- 极验验证码 (课堂笔记)

    用 python 的  selenium  访问  https://www.huxiu.com/ 自动通过验证码 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 20 ...

  10. 潭州课堂25班:Ph201805201 python 模块 datetime,logging 第七课 (课堂笔记)

    datetime 模块 # -*- coding: utf-8 -*-# 斌彬电脑# @Time : 2018/7/9 0009 20:42import datetime d = datetime.d ...