ro_crawler 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,3 @@
1
+ = Crawler
2
+
3
+ This project rocks and uses MIT-LICENSE.
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,14 @@
1
+ module RoCrawler
2
+ module Misc
3
+ ::String.class_eval do
4
+ def urlify(options={})
5
+ return self if self[/http/]
6
+ if options[:local]
7
+ return "file://#{self}"
8
+ else
9
+ "http://#{self}" unless self[/http:\/\//]
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module RoCrawler
2
+ VERSION = "0.0.4"
3
+ 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,10 @@
1
+ #module RoCrawler
2
+ # module WatirDSL
3
+ # ::Watir::Element.class_eval do
4
+ # def attribute selector
5
+ # assert_exists
6
+ # @element.attribute selector
7
+ # end
8
+ # end
9
+ # end
10
+ #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
@@ -0,0 +1,8 @@
1
+ require 'watir-webdriver'
2
+ require 'active_support'
3
+
4
+ $LOAD_PATH.unshift File.expand_path('../watir', __FILE__)
5
+
6
+ #require 'element'
7
+ require 'browser'
8
+ #require 'element_collection'
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&amp;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。标题注明应聘“网站前端研发工程师(实习生)”。&nbsp; </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>&nbsp;&nbsp;|&nbsp;&nbsp;
120
+ <a href="/company_5437055.html">该公司其他职位</a></span>&nbsp;&nbsp;|&nbsp;&nbsp;
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>&nbsp;&nbsp;|&nbsp;&nbsp;
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&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!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&amp;dcb=BAIDU_CPRO_SETJSONADSLOT&amp;dtm=BAIDU_CPRO_SETJSONADSLOT&amp;dai=1&amp;jn=3&amp;ltu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;liu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;ltr=&amp;ps=417x910&amp;psr=1280x1024&amp;par=1280x1024&amp;pcs=1035x927&amp;pss=1210x1293&amp;pis=1035x927&amp;cfv=11&amp;ccd=24&amp;col=en-US&amp;coa=&amp;cec=GBK&amp;tpr=1376801689335&amp;kl=&amp;dis=16"></script><div style="display:none">-</div> <iframe id="cproIframe1" src="http://cpro.baidu.com/cpro/ui/uijs.php?rs=0&amp;tu=u1340181&amp;tn=baiduCustSTagLinkUnit&amp;n=yingjiesheng_cpr&amp;adn=1&amp;rsi1=250&amp;rsi0=300&amp;rad=&amp;rss0=&amp;rss1=&amp;conOP=0&amp;rss2=&amp;rss3=&amp;rss4=&amp;rss5=&amp;rss6=&amp;rsi5=4&amp;ts=1&amp;at=103&amp;ch=0&amp;cad=1&amp;aurl=&amp;rss7=&amp;cpa=1&amp;fv=11&amp;cn=1&amp;if=16&amp;word=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;refer=&amp;ready=1&amp;jk=20c9b89155f788e2&amp;jn=3&amp;lmt=1376772889&amp;csp=1280,1024&amp;csn=1280,1024&amp;ccd=24&amp;chi=2&amp;cja=true&amp;cpl=12&amp;cmi=89&amp;cce=true&amp;csl=en-US&amp;did=1&amp;rt=13&amp;dt=1376801690&amp;ev=16777216&amp;c01=0&amp;prt=1376801689335&amp;i3=f&amp;anatp=0&amp;stid=5&amp;lunum=6&amp;scale=&amp;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&amp;dcb=BAIDU_CPRO_SETJSONADSLOT&amp;dtm=BAIDU_CPRO_SETJSONADSLOT&amp;dai=2&amp;jn=3&amp;ltu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;liu=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;ltr=&amp;ps=667x910&amp;psr=1280x1024&amp;par=1280x1024&amp;pcs=1035x927&amp;pss=1210x1293&amp;pis=1035x927&amp;cfv=11&amp;ccd=24&amp;col=en-US&amp;coa=&amp;cec=GBK&amp;tpr=1376801689335&amp;kl=&amp;dis=16"></script><div style="display:none">-</div> <iframe id="cproIframe2" src="http://cpro.baidu.com/cpro/ui/uijs.php?rs=0&amp;tu=u1339127&amp;tn=text_default_300_250&amp;n=yingjiesheng_cpr&amp;adn=3&amp;rsi1=250&amp;rsi0=300&amp;rad=&amp;rss0=%23dadada&amp;rss1=%23FFFFFF&amp;conOP=0&amp;rss2=%230066cc&amp;rss3=%23666666&amp;rss4=%23008000&amp;rss5=&amp;rss6=%23e10900&amp;rsi5=4&amp;ts=1&amp;at=65&amp;ch=0&amp;cad=1&amp;aurl=&amp;rss7=&amp;cpa=1&amp;fv=11&amp;cn=0&amp;if=16&amp;word=http%3A%2F%2Fmy.yingjiesheng.com%2Fjob_310147.html&amp;refer=&amp;ready=1&amp;jk=198ac77c94b1e310&amp;jn=3&amp;lmt=1376772889&amp;csp=1280,1024&amp;csn=1280,1024&amp;ccd=24&amp;chi=2&amp;cja=true&amp;cpl=12&amp;cmi=89&amp;cce=true&amp;csl=en-US&amp;did=2&amp;rt=10&amp;dt=1376801690&amp;pn=1|baiduCustSTagLinkUnit|103&amp;ev=50331648&amp;c01=0&amp;prt=1376801689335&amp;i3=f&amp;anatp=0&amp;stid=0&amp;lunum=6&amp;scale=&amp;skin=&amp;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&amp;img=1&amp;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&amp;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&amp;refe=&amp;location=http%3A//my.yingjiesheng.com/job_310147.html&amp;color=24x&amp;resolution=1280x1024&amp;returning=0&amp;language=undefined&amp;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&amp;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&amp;refe=&amp;location=http%3A//my.yingjiesheng.com/job_310147.html&amp;color=24x&amp;resolution=1280x1024&amp;returning=0&amp;language=undefined&amp;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>