ro_crawler 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +37 -0
- data/lib/ro_crawler/base.rb +149 -0
- data/lib/ro_crawler/methods.rb +18 -0
- data/lib/ro_crawler/misc.rb +14 -0
- data/lib/ro_crawler/version.rb +3 -0
- data/lib/ro_crawler/watir/browser.rb +47 -0
- data/lib/ro_crawler/watir/element.rb +10 -0
- data/lib/ro_crawler/watir/element_collection.rb +18 -0
- data/lib/ro_crawler/watir.rb +8 -0
- data/lib/ro_crawler.rb +21 -0
- data/spec/fixtures/intr.html +217 -0
- data/spec/fixtures/list.html +619 -0
- data/spec/ro_crawler/base_spec.rb +197 -0
- data/spec/ro_crawler/misc_spec.rb +11 -0
- data/spec/ro_crawler/watir/browser_spec.rb +9 -0
- data/spec/ro_crawler/watir/element_collection_spec.rb +9 -0
- data/spec/spec_helper.rb +20 -0
- metadata +139 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 138a31aa60488f939724b71f2d74b2abcfa07e16
|
4
|
+
data.tar.gz: eb14725c6bce8e6150eaf11cfe66d13a120c934c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b38276470529131ac0fd360f31a2cf232fc8d026d51a27abd815af4f203cef29733226b6e9d4c1e974e82611bea4869a63ce01d4b954f6cf57477818c0cbda4
|
7
|
+
data.tar.gz: 9fcdee015c33106ac2f82831136e6dddb314516143caab342a3e43bd460c33b95561cb00e9b2fbcca0987e6ed6fcf36a5dd74bc09cf6119eb188f1f90a0e9f68
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Crawler'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
Bundler::GemHelper.install_tasks
|
20
|
+
|
21
|
+
require 'rake/testtask'
|
22
|
+
|
23
|
+
Rake::TestTask.new(:test) do |t|
|
24
|
+
t.libs << 'lib'
|
25
|
+
t.libs << 'test'
|
26
|
+
t.pattern = 'test/**/*_test.rb'
|
27
|
+
t.verbose = false
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
task default: :test
|
32
|
+
|
33
|
+
require 'rspec/core/rake_task'
|
34
|
+
|
35
|
+
RSpec::Core::RakeTask.new
|
36
|
+
|
37
|
+
task default: :spec
|
@@ -0,0 +1,149 @@
|
|
1
|
+
module RoCrawler
|
2
|
+
class Base
|
3
|
+
include RoSupport::Debug
|
4
|
+
|
5
|
+
def spider(url, anchor_selector, intr_selector)
|
6
|
+
@url = url
|
7
|
+
@home_url = get_home_url(url)
|
8
|
+
@auchor_selector = anchor_selector
|
9
|
+
@intr_selector = intr_selector
|
10
|
+
get_link_titles
|
11
|
+
get_contents
|
12
|
+
browser_close
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_link_titles
|
16
|
+
@link_titles = get_tags_attrs_from(@url, @auchor_selector, 'href', 'text')
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_contents
|
20
|
+
ro_raise(err "@link_titles is nil", output: ['@url']) if @link_titles.nil?
|
21
|
+
@link_title_contents = @link_titles.dup
|
22
|
+
@link_title_contents.each do |link_content|
|
23
|
+
if link_content[0][/http/]
|
24
|
+
link = link_content[0]
|
25
|
+
else
|
26
|
+
link = "#{@home_url}#{link_content[0]}"
|
27
|
+
end
|
28
|
+
|
29
|
+
link_content << intr = get_tags_attrs_from(link, @intr_selector, 'text')
|
30
|
+
unless intr.is_a? String
|
31
|
+
raise_log 'intr must be a string', 'ro_crawler_base.log'
|
32
|
+
end
|
33
|
+
link_content
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def handler(&blk)
|
38
|
+
handle @link_title_contents, &blk
|
39
|
+
end
|
40
|
+
|
41
|
+
def open_browser(driver)
|
42
|
+
::Watir::Browser.new driver
|
43
|
+
end
|
44
|
+
|
45
|
+
def local?
|
46
|
+
`google-chrome --version`[/Google Chrome/] ? true : false
|
47
|
+
end
|
48
|
+
|
49
|
+
def crawler(opt={})
|
50
|
+
if local?
|
51
|
+
if opt[:driver]
|
52
|
+
@b = open_browser opt[:driver]
|
53
|
+
else
|
54
|
+
@b = open_browser :phantomjs
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_html_from(url)
|
60
|
+
html = ""
|
61
|
+
@b ||= crawler
|
62
|
+
|
63
|
+
get_html = lambda do
|
64
|
+
if url[/http/]
|
65
|
+
Nokogiri::HTML.parse @b.goto(url).html
|
66
|
+
else
|
67
|
+
Nokogiri::HTML.parse File.read(url)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
html = get_html.call
|
72
|
+
end
|
73
|
+
|
74
|
+
def get_tags_from(url, selector)
|
75
|
+
p "get tags: #{selector} from url:#{url}"
|
76
|
+
html = get_html_from(url)
|
77
|
+
result = html.css(selector)
|
78
|
+
raise "#{selector} can't find result" if result.nil?
|
79
|
+
if result.respond_to?(:inner_html)
|
80
|
+
tag = result
|
81
|
+
elsif result.is_a?(Nokogiri::XML::NodeSet)
|
82
|
+
tags = []
|
83
|
+
result.each do |tag|
|
84
|
+
tags << tag
|
85
|
+
end
|
86
|
+
tags
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def get_attrs_in(tags, *attr_names)
|
91
|
+
result = []
|
92
|
+
tags.each do |tag|
|
93
|
+
attr_value = []
|
94
|
+
judge = lambda do |attr_names|
|
95
|
+
attr_names.each do |attr_name|
|
96
|
+
if attr_name == 'text'
|
97
|
+
attr_value << tag.text
|
98
|
+
elsif attr_name == 'inner_html'
|
99
|
+
attr_value << tag.inner_html
|
100
|
+
else
|
101
|
+
attr_value << tag.attribute(attr_name).value
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
if attr_names.length > 1
|
107
|
+
judge.call(attr_names)
|
108
|
+
elsif attr_names.length == 1
|
109
|
+
attr_name = attr_names
|
110
|
+
judge.call(attr_name)
|
111
|
+
attr_value = attr_value.join
|
112
|
+
end
|
113
|
+
result << attr_value
|
114
|
+
end
|
115
|
+
|
116
|
+
eval %Q(return #{result.to_args})
|
117
|
+
end
|
118
|
+
|
119
|
+
def get_tags_attrs_from(url, tags_selector, *attr_names)
|
120
|
+
tags = get_tags_from(url, tags_selector)
|
121
|
+
get_attrs_in(tags, *attr_names)
|
122
|
+
end
|
123
|
+
|
124
|
+
def browser_close
|
125
|
+
@b.close if @b.respond_to?(:close)
|
126
|
+
end
|
127
|
+
|
128
|
+
def handle(results)
|
129
|
+
if results.is_a?(Array)
|
130
|
+
results.each do |result|
|
131
|
+
yield result
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def get_home_url(url)
|
137
|
+
url[/(http(s)?\:\/\/)(www\.)?.+\.((com)|(org)|(info)|(me)|(net)|(cn))/]
|
138
|
+
end
|
139
|
+
|
140
|
+
# Handle accident error eg. timeout cause
|
141
|
+
def handle_accident_error
|
142
|
+
yield @b if @b && block_given?
|
143
|
+
end
|
144
|
+
|
145
|
+
def proxy?(port)
|
146
|
+
!`lsof -i:#{port}`.empty?
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#require 'nokogiri'
|
2
|
+
#module RoCrawler
|
3
|
+
# module Methods
|
4
|
+
# include ::RoCrawler::Crawler
|
5
|
+
# def get_intr_from(html)
|
6
|
+
# doc = Nokogiri::HTML.parse html
|
7
|
+
# doc.css('.jobIntro, .j_i')
|
8
|
+
# .gsub(/(本站提醒:如何识别虚假招聘信息?求职必看,切勿受骗上当!)|(如何写一份简单、直接、高效的求职信?)/, '')
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# def get_links_contents_from(url, selector)
|
12
|
+
# as = @browser.css @link_selector
|
13
|
+
# unless as.nil?
|
14
|
+
# @offers = as.collect('text', 'href')
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
#end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module RoCrawler
|
2
|
+
include RoCrawler::Misc
|
3
|
+
module Watir
|
4
|
+
module Browser
|
5
|
+
::Watir::Browser.class_eval do
|
6
|
+
# Get html from path
|
7
|
+
# eg get_html_from 'baidu.com'
|
8
|
+
# eg get_html_from '/home/users/testfile'
|
9
|
+
def goto(url, options = {})
|
10
|
+
if options[:local]
|
11
|
+
url = url.urlify local: true
|
12
|
+
else
|
13
|
+
url = url.urlify local: true
|
14
|
+
end
|
15
|
+
@driver.navigate.to url
|
16
|
+
run_checkers
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
def css(selector)
|
21
|
+
es = self.elements(css: selector)
|
22
|
+
if es.size == 0
|
23
|
+
"Element #{selector} is not exist"
|
24
|
+
return
|
25
|
+
elsif es.size == 1
|
26
|
+
return es.first
|
27
|
+
else
|
28
|
+
es
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def batch &blk
|
33
|
+
self.instance_eval &blk
|
34
|
+
end
|
35
|
+
|
36
|
+
def next_page_url
|
37
|
+
self.css('a').each do |a|
|
38
|
+
reg = /(下一页)|(next)/i
|
39
|
+
if a.text[reg]
|
40
|
+
return a.attribute 'href'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#module RoCrawler
|
2
|
+
# module WatirDSL
|
3
|
+
# ::Watir::ElementCollection.class_eval do
|
4
|
+
# def collect *selectors
|
5
|
+
# result = []
|
6
|
+
# link_contents = []
|
7
|
+
# self.each do |tag|
|
8
|
+
# selectors.each do |selector|
|
9
|
+
# link_contents << tag.attribute(selector)
|
10
|
+
# end
|
11
|
+
# result << link_contents
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# eval "return #{result.to_args}"
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
#end
|
data/lib/ro_crawler.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# require all files in dir name is same with __FILE_-
|
2
|
+
autoload :FileActions, 'ro_support/file_actions'
|
3
|
+
autoload :Array, 'ro_support/array'
|
4
|
+
autoload :Log, 'ro_support/log'
|
5
|
+
|
6
|
+
include RoSupport::FileActions
|
7
|
+
include RoSupport::Array
|
8
|
+
include RoSupport::Log
|
9
|
+
|
10
|
+
require 'watir-webdriver'
|
11
|
+
|
12
|
+
$LOAD_PATH.unshift File.expand_path('../..', __FILE__)
|
13
|
+
|
14
|
+
require 'lib/ro_crawler/misc'
|
15
|
+
require 'lib/ro_crawler/watir'
|
16
|
+
|
17
|
+
module RoCrawler
|
18
|
+
include RoSupport::FileActions
|
19
|
+
autoload_all_files_in(File.expand_path("../ro_crawler", __FILE__))
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,217 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
|
2
|
+
<meta http-equiv="Content-Type" content="text/html; charset=gbk"><title>北京网站前端研发工程师(实习生)招聘_美薇亭(北京)文化发展有限公司招聘_应届生求职网</title>
|
3
|
+
<meta name="keywords" content="网站前端研发工程师(实习生) 美薇亭(北京)文化发展有限公司 校园招聘 应届生求职网">
|
4
|
+
<meta name="description" content="网站前端研发工程师(实习生) 美薇亭(北京)文化发展有限公司 工作职责:1、参与RIA富交互产品的前端系统的开发与实现2、参与Web与移动互联网前沿技术研究与新技术创新职位要求: 1、熟悉HTML5/CSS3等相关技术2、熟悉J..."><script>
|
5
|
+
if ((screen.width < 1210)){document.write("<link rel='stylesheet' type='text/css' href='/template/display/layout_1024_show_v2.css' />")}
|
6
|
+
else{document.write("<link rel='stylesheet' type='text/css' href='/template/display/layout_show_v2.css' />")}
|
7
|
+
</script><link rel="stylesheet" type="text/css" href="/template/display/layout_show_v2.css">
|
8
|
+
<style>
|
9
|
+
body{behavior:url("/template/display/csshover.htc");margin:0;padding:0;}
|
10
|
+
</style>
|
11
|
+
|
12
|
+
<script src="/globals/scripts/globals.js" language="javascript" type="text/javascript"></script>
|
13
|
+
<script src="/globals/scripts/ajax.js" language="javascript" type="text/javascript"></script>
|
14
|
+
<script src="/globals/scripts/category.js" language="javascript" type="text/javascript"></script><script src="http://bdimg.share.baidu.com/static/js/logger.js?cdnversion=382445"></script><link href="http://bdimg.share.baidu.com/static/css/bdsstyle.css?cdnversion=20130704" rel="stylesheet" type="text/css"></head><body><iframe frameborder="0" style="display: none;"></iframe><div id="bdshare" style="right: 0px; top: 312px; position: fixed; height: 330px; overflow: hidden;"><img src="http://bdimg.share.baidu.com/static/images/r1.gif" alt="" style="float:left;margin-top:58px;"><iframe id="bdsIfr" style="position:absolute;display:none;z-index:9999;" frameborder="0"></iframe><div id="bdshare_l" style="display: none; left: 24px;"><div id="bdshare_l_c"><h6>分享到</h6><ul><li><a href="#" class="bds_mshare mshare">一键分享</a></li><li><a href="#" class="bds_qzone qqkj">QQ空间</a></li><li><a href="#" class="bds_tsina xlwb">新浪微博</a></li><li><a href="#" class="bds_baidu bdsc">百度云收藏</a></li><li><a href="#" class="bds_renren rrw">人人网</a></li><li><a href="#" class="bds_tqq txwb">腾讯微博</a></li><li><a href="#" class="bds_bdxc bdxc">百度相册</a></li><li><a href="#" class="bds_kaixin001 kxw">开心网</a></li><li><a href="#" class="bds_tqf txpy">腾讯朋友</a></li><li><a href="#" class="bds_tieba bdtb">百度贴吧</a></li><li><a href="#" class="bds_douban db">豆瓣网</a></li><li><a href="#" class="bds_tsohu shwb">搜狐微博</a></li><li><a href="#" class="bds_bdhome bdhome">百度新首页</a></li><li><a href="#" class="bds_sqq sqq">QQ好友</a></li><li><a href="#" class="bds_thx thx">和讯微博</a></li><li><a href="#" class="bds_more">更多...</a></li></ul><p><a href="#" class="goWebsite">百度分享</a></p></div></div></div><div id="category_appended_container" style="z-index:3;display:block;float:left;"></div>
|
15
|
+
<script src="/globals/scripts/control.js" language="javascript" type="text/javascript"></script>
|
16
|
+
<script src="/globals/scripts/checks.js" language="javascript" type="text/javascript"></script>
|
17
|
+
<script src="/template/display/display_jobs.js" language="javascript" type="text/javascript"></script>
|
18
|
+
<script src="http://www.yingjiesheng.com/cache/outer/jp_jobshow_txt.js" language="javascript" type="text/javascript"></script>
|
19
|
+
<script src="/template/display/display_jobs_lang.js" language="javascript" type="text/javascript"></script>
|
20
|
+
<script src="/template/display/moreCity.js" language="javascript" type="text/javascript"></script>
|
21
|
+
<script src="$urlconf[domains]}template/display/globals/scripts/jquery.js" language="javascript" type="text/javascript"></script>
|
22
|
+
<script src="/globals/scripts/jqModal.js" language="javascript" type="text/javascript"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript">
|
25
|
+
var weibo_w = 106 , weibo_h = 28;
|
26
|
+
var weiboparam = {
|
27
|
+
url:location.href,
|
28
|
+
type:'5',
|
29
|
+
count:'', /**是否显示分享数,1显示(可选)*/
|
30
|
+
appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
|
31
|
+
title:'我已在应届生求职网www.yingjiesheng.com上成功申请 美薇亭(北京)文化发展有限公司 网站前端研发工程师(实习生) 职位,你也赶快来申请吧,申请网址:', /**分享的文字内容(可选,默认为所在页面的title)*/
|
32
|
+
pic:'', /**分享图片的路径(可选)*/
|
33
|
+
ralateUid:'1241330914', /**关联用户的UID,分享微博会@该用户(可选)*/
|
34
|
+
rnd:new Date().valueOf()
|
35
|
+
}
|
36
|
+
var weibotemp = [];
|
37
|
+
for( var p in weiboparam ){
|
38
|
+
weibotemp.push(p + '=' + encodeURIComponent( weiboparam[p] || '' ) )
|
39
|
+
}
|
40
|
+
var my_job_id = '310147';
|
41
|
+
</script>
|
42
|
+
<link href="/template/css/popup.css" rel="stylesheet" type="text/css">
|
43
|
+
<link href="/template/css/category.css" rel="stylesheet" type="text/css">
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
<div id="jobappsection" class="mypopup"></div>
|
49
|
+
<div class="head">
|
50
|
+
<div class="box">
|
51
|
+
<div class="h_l"><a class="logo" href="http://www.yingjiesheng.com"></a>欢迎来到应届生求职网-中国大学生求职第一网站</div>
|
52
|
+
<div class="l_r"><span id="jobshow_log_span"><a href="http://k.yingjiesheng.com/" target="_blank">个人账户登录</a> | <a href="http://my.yingjiesheng.com/index.php/personal/register.htm" target="_blank">个人用户注册</a> | <a href="http://my.yingjiesheng.com/index.php/company.htm" target="_blank">企业账户登录</a> | <a href="http://my.yingjiesheng.com/index.php/company/register.htm" target="_blank">企业用户注册</a></span> </div>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
<div class="box">
|
56
|
+
<div class="menu">
|
57
|
+
<ol class="clearfix">
|
58
|
+
<li class="img"><img src="/images/display/mlefy.jpg"></li>
|
59
|
+
<li class="on"><a href="http://www.yingjiesheng.com/">首页</a></li>
|
60
|
+
<li><span><img src="/images/display/icon_hot2.gif"></span><a href="http://bbs.yingjiesheng.com/forum.php" target="_blank">BBS</a></li>
|
61
|
+
<li><a href="http://www.yingjiesheng.com/commend-fulltime-1.html" target="_blank">全职推荐</a></li>
|
62
|
+
<li><a href="http://www.yingjiesheng.com/commend-parttime-1.html" target="_blank">实习推荐</a></li>
|
63
|
+
<li><a href="http://s.yingjiesheng.com/" target="_blank">职位搜索</a></li>
|
64
|
+
<li><a href="http://my.yingjiesheng.com/xuanjianghui.html" target="_blank">宣讲会</a></li>
|
65
|
+
<li><a href="http://zph.yingjiesheng.com/" target="_blank">招聘会</a></li>
|
66
|
+
<li><a href="http://www.yingjiesheng.com/industry/" target="_blank">行业招聘</a></li>
|
67
|
+
<li><a href="http://s.yingjiesheng.com/result.jsp?keyword=%E5%85%AC%E5%8A%A1%E5%91%98+OR+%E4%BA%8B%E4%B8%9A%E5%8D%95%E4%BD%8D&do=2" target="_blank">公务员</a></li>
|
68
|
+
<li><a href="http://www.yingjiesheng.com/major/" target="_blank">分类求职</a></li>
|
69
|
+
<li><a href="http://www.yingjiesheng.com/deadline/" target="_blank">网申截止</a></li>
|
70
|
+
<li><a href="http://hotel.yingjiesheng.com/" target="_blank">旅社</a></li>
|
71
|
+
<li><a href="http://vip.yingjiesheng.com/newbook/2013/" target="_blank">求职书</a></li>
|
72
|
+
<li class="cur"><span><img src="/images/display/icon_hot2.gif"></span><a href="http://wenku.yingjiesheng.com/" target="_blank">文库</a></li>
|
73
|
+
<li class="img" style="text-align:right;"><img src="/images/display/mright.jpg"></li>
|
74
|
+
</ol>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
<div class="box clearfix">
|
79
|
+
<div class="loca ">
|
80
|
+
<div id="area"><ol><li idd="上海" value="349">上海</li><li idd="北京" value="56">北京</li><li idd="广州" value="85">广州</li><li idd="深圳" value="102">深圳</li><li idd="武汉" value="186">武汉</li><li idd="南京" value="217">南京</li><li idd="天津" value="376">天津</li><li idd="成都" value="352">成都</li><li idd="其他地区" value="999">其他地区</li></ol></div>
|
81
|
+
<div id="type"><ol><li idd="全职" value="1">全职</li><li idd="兼职" value="2">兼职</li></ol></div>
|
82
|
+
<span style="_height:55px;"><form action="http://s.yingjiesheng.com/result.jsp" method="get" accept-charset="utf-8" onsubmit="document.charset='utf-8';" target="_blank"><big id="area_s">请选择地区</big><big id="type_s">全/兼职</big><input type="input" name="keyword" id="keyword" value="" class="input"><input type="submit" value="" class="btn"><input type="hidden" name="cityarea2" id="cityarea2"><input type="hidden" name="jobtype" id="jobtype" value="0"><input type="hidden" name="city" id="city" value="0"></form></span><b>
|
83
|
+
当前位置:<a href="http://www.yingjiesheng.com">首页</a> » <a href="http://www.yingjiesheng.com/beijing/">北京</a>招聘 »
|
84
|
+
<a href="/company_5437055.html">美薇亭(北京)文化发展有限公司</a> » <a href="/job_310147.html">网站前端研发工程师(实习生)</a></b>
|
85
|
+
</div> <div class="main">
|
86
|
+
<div class="com_mleft">
|
87
|
+
<div class="com">
|
88
|
+
<h2><a href="/company_5437055.html" target="_blank">美薇亭(北京)文化发展有限公司</a></h2>
|
89
|
+
<ol><li style="width:50%">所属行业: 其他 </li><li>企业规模:51-100人</li><li>企业性质: 民营/私营企业</li></ol>
|
90
|
+
</div>
|
91
|
+
<div class="job_list">
|
92
|
+
<h1><a href="/job_310147.html" title="网站前端研发工程师(实习生)">网站前端研发工程师(实习生)</a>(北京总部,市场部)</h1>
|
93
|
+
<ul>
|
94
|
+
<li>工作地点:<span><a href="http://www.yingjiesheng.com/beijing/">北京</a></span></li><li>有效日期:<span>2013年08月16日 至 2013年11月14日</span></li><li>招聘人数:<span>3 人</span></li><li>职位性质:兼职/实习</li>
|
95
|
+
</ul>
|
96
|
+
<h2>网站前端研发工程师(实习生) 职位描述:</h2>
|
97
|
+
<div class="j_i">
|
98
|
+
工作职责:<br>
|
99
|
+
1、参与RIA富交互产品的前端系统的开发与实现<br>
|
100
|
+
2、参与Web与移动互联网前沿技术研究与新技术创新<br>
|
101
|
+
<br>
|
102
|
+
<br>
|
103
|
+
职位要求: <br>
|
104
|
+
1、熟悉HTML5/CSS3等相关技术<br>
|
105
|
+
2、熟悉JavaScript、Ajax、DOM等前端技术,掌握面向对象编程思想<br>
|
106
|
+
3、熟悉Bootstrap、YUI等前端开源框架<br>
|
107
|
+
4、熟悉W3C标准,对表现与数据分离、Web语义化等有深刻理解<br>
|
108
|
+
5、熟练使用Linux系统<br>
|
109
|
+
6、有互联网公司技术岗位实习经验者优先<br>
|
110
|
+
7、有强烈的上进心和求知欲,善于学习和运用新知识<br>
|
111
|
+
<br>
|
112
|
+
对职位感兴趣者,欢迎您投递简历至:career@awedding.com.cn。标题注明应聘“网站前端研发工程师(实习生)”。 </div>
|
113
|
+
<div class="job_sq"><span id="apply310147"><a href="#" class="apply" onclick="showjobapp('310147');return false;"><img style="vertical-align:middle;" src="http://my.yingjiesheng.com/images/display/apply.jpg" title="申请该职位"></a></span>
|
114
|
+
<span><a href="http://my.yingjiesheng.com/index.php/personal/resume.htm/?menu=2" target="_new"><img style="vertical-align:middle;" src="http://my.yingjiesheng.com/images/display/write.jpg" title="马上填简历"></a></span>
|
115
|
+
|
116
|
+
|
117
|
+
<br>
|
118
|
+
|
119
|
+
<span id="faver310147"><a href="#" class="faver" onclick="yjs_add_fav('%C3%C0%DE%B1%CD%A4%A3%A8%B1%B1%BE%A9%A3%A9%CE%C4%BB%AF%B7%A2%D5%B9%D3%D0%CF%DE%B9%AB%CB%BE-%CD%F8%D5%BE%C7%B0%B6%CB%D1%D0%B7%A2%B9%A4%B3%CC%CA%A6%A3%A8%CA%B5%CF%B0%C9%FA%A3%A9','%2Fjob_310147.html');return false;">加入求职记事本</a> |
|
120
|
+
<a href="/company_5437055.html">该公司其他职位</a></span> |
|
121
|
+
<span id="emailer310147"><a href="#" class="emailer" onclick="emailer('310147','%CD%F8%D5%BE%C7%B0%B6%CB%D1%D0%B7%A2%B9%A4%B3%CC%CA%A6%A3%A8%CA%B5%CF%B0%C9%FA%A3%A9');return false;">推荐给好友</a></span> |
|
122
|
+
<span id="job_jubao310147"><a href="#" class="emailer" style="font-weight: bold;color: #d00;" onclick="job_jubao('310147','%CD%F8%D5%BE%C7%B0%B6%CB%D1%D0%B7%A2%B9%A4%B3%CC%CA%A6%A3%A8%CA%B5%CF%B0%C9%FA%A3%A9');return false;">向应届生举报该职位!</a></span>
|
123
|
+
</div>
|
124
|
+
<script src="/globals/scripts/job_note.js" language="javascript" type="text/javascript"></script><div style="border: 1px dotted #ffcbcb; margin: 10px 50px; padding: 10px; background: #fff1f1;">
|
125
|
+
<a href="http://bbs.yingjiesheng.com/thread-1100509-1-1.html" target="_blank">求职tips:提高警惕识破虚假招聘</a>
|
126
|
+
</div>
|
127
|
+
|
128
|
+
</div>
|
129
|
+
<dl class="about">
|
130
|
+
<dt><a href="/company_5437055.html" target="_blank">美薇亭(北京)文化发展有限公司</a>简介</dt>
|
131
|
+
<dd><p>
|
132
|
+
中国婚嫁产业年产值数千亿,然而,年收入过亿的公司寥寥。这既说明了行业处于初期,也意味着无限的潜力。<br>
|
133
|
+
2008年,美薇亭成立伊始,就用远超出行业标准的原则来约束要求自己。我们并不满足做一家作坊式的、保守的小婚庆公司,“推动行业发展”“建立上市标杆企业”才是我们动力的来源。美薇亭立志于成为行业中的创新者和领航者。<br>
|
134
|
+
2009年起,陆续成为电影《恋爱吧》、《失恋33天》和《我愿意》的婚礼指导专家,让婚礼服务行业引起了大众的关注;<br>
|
135
|
+
2010年,分别接受《中国经营报》和《创业家》杂志专访,让主流媒体开始注意到婚礼行业的魅力及价值;<br>
|
136
|
+
2011年夏,美薇亭第一个提出,专业分工的重要性。把宴会设计职能从婚礼顾问里拆分,成立专业的宴会设计部;<br>
|
137
|
+
2011年冬,美薇亭召开中国第一届国际婚礼专家论坛。把美国顶级宴会设计师Preston Bailey、David Beahm,明星级婚礼摄影师Joe Buissink、Denis Reggie邀请到中国进行演讲,引起行业和媒体轰动。<br>
|
138
|
+
我们的每一步,都在引领行业发展。<br>
|
139
|
+
现在,度过生存期的美薇亭,邀请您的加入。在这个美好而初期的行业,一起打造“标杆性”上市公司。 </p>
|
140
|
+
|
141
|
+
<div class="txt"> <ol> <li><span>企业网址:</span><a href="http://www.awedding.com.cn" target="_blank">http://www.awedding.com.cn</a></li>
|
142
|
+
|
143
|
+
</ol>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
</dd>
|
147
|
+
</dl>
|
148
|
+
<div class="pre_next"><span class="left_job">上一职位:<a href="/job_310146.html">美薇亭(北京)文化发展有限公司招聘PHP研发工程师(实习生)</a></span><span class="right_job">下一职位:<a href="/job_310148.html">唐山市乐业商贸有限公司招聘办公室文员</a></span>
|
149
|
+
</div>
|
150
|
+
</div>
|
151
|
+
<div class="mright">
|
152
|
+
<div class="g_right">
|
153
|
+
<script async="" src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
154
|
+
<!-- my_yjs_right_300_250 -->
|
155
|
+
<ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-5664019590241836" data-ad-slot="2841409830" data-adsbygoogle-status="done"><ins style="display:inline-table;border:none;height:250px;margin:0;padding:0;position:relative;visibility:visible;width:300px"><ins id="aswift_0_anchor" style="display:block;border:none;height:250px;margin:0;padding:0;position:relative;visibility:visible;width:300px"><iframe width="300" height="250" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&&s.handlers,h=H&&H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&&(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"></iframe></ins></ins></ins>
|
156
|
+
<script>
|
157
|
+
(adsbygoogle = window.adsbygoogle || []).push({});
|
158
|
+
</script>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<div class="gg_right">
|
162
|
+
<script type="text/javascript">
|
163
|
+
/*自定义标签云,创建于2013-8-8,my_right,300-250*/
|
164
|
+
var cpro_id = "u1340181";
|
165
|
+
</script>
|
166
|
+
<script src="http://cpro.baidustatic.com/cpro/ui/c.js" type="text/javascript"></script><script type="text/javascript" charset="utf-8" src="http://pos.baidu.com/ecom?di=u1340181&dcb=BAIDU_CPRO_SETJSONADSLOT&dtm=BAIDU_CPRO_SETJSONADSLOT&dai=1&jn=3&ltu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&liu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&ltr=&ps=417x910&psr=1280x1024&par=1280x1024&pcs=1035x927&pss=1210x1293&pis=1035x927&cfv=11&ccd=24&col=en-US&coa=&cec=GBK&tpr=1376801689335&kl=&dis=16"></script><div style="display:none">-</div> <iframe id="cproIframe1" src="http://cpro.baidu.com/cpro/ui/uijs.php?rs=0&tu=u1340181&tn=baiduCustSTagLinkUnit&n=yingjiesheng_cpr&adn=1&rsi1=250&rsi0=300&rad=&rss0=&rss1=&conOP=0&rss2=&rss3=&rss4=&rss5=&rss6=&rsi5=4&ts=1&at=103&ch=0&cad=1&aurl=&rss7=&cpa=1&fv=11&cn=1&if=16&word=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&refer=&ready=1&jk=20c9b89155f788e2&jn=3&lmt=1376772889&csp=1280,1024&csn=1280,1024&ccd=24&chi=2&cja=true&cpl=12&cmi=89&cce=true&csl=en-US&did=1&rt=13&dt=1376801690&ev=16777216&c01=0&prt=1376801689335&i3=f&anatp=0&stid=5&lunum=6&scale=&skin=tabcloud_skin_1" width="300" height="250" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
|
167
|
+
</div>
|
168
|
+
<div class="b_right">
|
169
|
+
<script type="text/javascript">
|
170
|
+
/*300*250,创建于2013-8-7,my_yjs_right*/
|
171
|
+
var cpro_id = "u1339127";
|
172
|
+
</script>
|
173
|
+
<script src="http://cpro.baidustatic.com/cpro/ui/c.js" type="text/javascript"></script><script type="text/javascript" charset="utf-8" src="http://pos.baidu.com/ecom?di=u1339127&dcb=BAIDU_CPRO_SETJSONADSLOT&dtm=BAIDU_CPRO_SETJSONADSLOT&dai=2&jn=3&ltu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&liu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&ltr=&ps=667x910&psr=1280x1024&par=1280x1024&pcs=1035x927&pss=1210x1293&pis=1035x927&cfv=11&ccd=24&col=en-US&coa=&cec=GBK&tpr=1376801689335&kl=&dis=16"></script><div style="display:none">-</div> <iframe id="cproIframe2" src="http://cpro.baidu.com/cpro/ui/uijs.php?rs=0&tu=u1339127&tn=text_default_300_250&n=yingjiesheng_cpr&adn=3&rsi1=250&rsi0=300&rad=&rss0=%23dadada&rss1=%23FFFFFF&conOP=0&rss2=%230066cc&rss3=%23666666&rss4=%23008000&rss5=&rss6=%23e10900&rsi5=4&ts=1&at=65&ch=0&cad=1&aurl=&rss7=&cpa=1&fv=11&cn=0&if=16&word=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&refer=&ready=1&jk=198ac77c94b1e310&jn=3&lmt=1376772889&csp=1280,1024&csn=1280,1024&ccd=24&chi=2&cja=true&cpl=12&cmi=89&cce=true&csl=en-US&did=2&rt=10&dt=1376801690&pn=1|baiduCustSTagLinkUnit|103&ev=50331648&c01=0&prt=1376801689335&i3=f&anatp=0&stid=0&lunum=6&scale=&skin=&xuanting=1" width="300" height="250" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" baiduxuanting="baiduCproXuantingRoof"></iframe>
|
174
|
+
</div>
|
175
|
+
</div>
|
176
|
+
</div>
|
177
|
+
</div>
|
178
|
+
<script type="text/javascript">
|
179
|
+
function index_log_user(c_name){
|
180
|
+
if(document.cookie.length>0){
|
181
|
+
c_start=document.cookie.indexOf(c_name + "=")
|
182
|
+
if(c_start!=-1){
|
183
|
+
c_start=c_start + c_name.length+1
|
184
|
+
c_end=document.cookie.indexOf(";",c_start)
|
185
|
+
if(c_end==-1) c_end=document.cookie.length
|
186
|
+
return unescape(document.cookie.substring(c_start,c_end))
|
187
|
+
}
|
188
|
+
}
|
189
|
+
return "";
|
190
|
+
}
|
191
|
+
function index_load_script(url){
|
192
|
+
document.writeln("<scr"+"ipt type='text/javascript' src='"+url+"'></sc"+"ript>");
|
193
|
+
}
|
194
|
+
var index_login_user = index_log_user('wespaceuser');
|
195
|
+
if(index_login_user!=null && index_login_user.length>1){
|
196
|
+
index_load_script('/index.php/personal/invite_notice_js/?jobshow=1');
|
197
|
+
}
|
198
|
+
</script>
|
199
|
+
<iframe width="0" height="0" id="ajaxform" name="ajaxform" style="display:none;"></iframe>
|
200
|
+
<script src="/index.php/display/jobview/310147.htm" language="javascript" type="text/javascript"></script>
|
201
|
+
<script src="/globals/scripts/extents.js" language="javascript" type="text/javascript"></script><div id="titlealtlayer" style="position:absolute;z-index:1000;padding:4px;font-size:12px;border:1px solid #000;background-color:#ffc;display:none;"></div>
|
202
|
+
<div class="com_foot box clearfix">
|
203
|
+
<a href="http://www.yingjiesheng.com/" target="_blank">应届生求职网</a> | <a href="http://www.yingjiesheng.com/about/partner/index.html">合作伙伴</a> | <a href="http://www.yingjiesheng.com/about/company.html">企业免费注册说明</a> | <a href="http://www.yingjiesheng.com/">帮助指南</a> | <a href="http://link.yingjiesheng.com/">友情链接</a> | <a href="http://www.yingjiesheng.com/about/about.html">联系我们</a><br>应届生求职网(<a href="http://www.yingjiesheng.com/">YingJieSheng.COM</a>) © 2005—2013 All Right Reserved
|
204
|
+
</div>
|
205
|
+
<script language="javascript" src="/globals/scripts/jquery_my_function.js"></script>
|
206
|
+
<script type="text/javascript" src="/globals/scripts/jquery_list_function.js"></script>
|
207
|
+
<!-- Baidu Button BEGIN -->
|
208
|
+
<script type="text/javascript" id="bdshare_js" data="type=slide&img=1&uid=11526" src="http://bdimg.share.baidu.com/static/js/bds_s_v2.js?cdnversion=382445"></script>
|
209
|
+
|
210
|
+
<script type="text/javascript">
|
211
|
+
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + new Date().getHours();
|
212
|
+
</script>
|
213
|
+
<!-- Baidu Button END -->
|
214
|
+
<span style="display:none"><script language="javascript" src="http://count15.51yes.com/click.aspx?id=156561790&logo=5"></script><a href="http://countt.51yes.com/index.aspx?id=156561790" target="_blank"><img width="20" height="20" border="0" hspace="0" vspace="0" src="http://count15.51yes.com/count5.gif" alt="51YES网站统计系统"></a><iframe marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" src="http://count15.51yes.com/sa.htm?id=156561790&refe=&location=http%3A//my.yingjiesheng.com/job_310147.html&color=24x&resolution=1280x1024&returning=0&language=undefined&ua=Mozilla/5.0%20%28X11%3B%20Linux%20x86_64%29%20AppleWebKit/537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome/28.0.1500.95%20Safari/537.36" height="0" width="0"></iframe><script language="javascript" src="http://count18.51yes.com/click.aspx?id=183141866&logo=5"></script><a href="http://countt.51yes.com/index.aspx?id=183141866" target="_blank"><img width="20" height="20" border="0" hspace="0" vspace="0" src="http://count18.51yes.com/count5.gif" alt="51YES网站统计系统"></a><iframe marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" src="http://count18.51yes.com/sa.htm?id=183141866&refe=&location=http%3A//my.yingjiesheng.com/job_310147.html&color=24x&resolution=1280x1024&returning=0&language=undefined&ua=Mozilla/5.0%20%28X11%3B%20Linux%20x86_64%29%20AppleWebKit/537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome/28.0.1500.95%20Safari/537.36" height="0" width="0"></iframe></span>
|
215
|
+
|
216
|
+
|
217
|
+
</body></html>
|