use vars qw($DEBUG);
use Data::Printer;
use Text::Wrap;
+use POSIX qw(strftime);
tie my $uuid, 'OSSP::uuid::tie';
$uuid= ["v1"];
sub {scalar $_[0]->parent()->attr('class') eq 'bti-jd-details-action'}],
position => [class=>"bti-jd-title",itemprop=>"title"],
},
+ nature => {url => 'http://www.nature.com/naturejobs/science/jobs?utf8=%E2%9C%93&q%5B%5D=professor&job_type%5B%5D=Assistant+Professor&job_type%5B%5D=Professor&order_by=created_on',
+ next_selector => [class=>"next_page",url_regex=>qr{^/naturejobs/science/jobs},],
+ job_selector => [url_regex => qr{^/naturejobs/science/jobs/\d+-.+}],
+ university => [href => qr{^/naturejobs/science/employer-directory/\d+$}],
+ description => [class=>"job-description"],
+ date => [],
+ position => [class=>'job-title heading'],
+ },
);
binmode STDOUT,":utf8";
get_jobs($options{site},$options{pages});
+
sub get_jobs {
my ($site,$pages) = @_;
+ my $todays_date = strftime('%Y-%m-%d %H:%M:%S',localtime());
+
my $m = WWW::Mechanize->new();
WWW::Mechanize::TreeBuilder->meta->apply($m);
if (not defined $sites{$site}) {
$m->find_all_links(@{$s->{job_selector}});
for my $j_u (@job_urls) {
$m->get($j_u);
- my $university = $m->tree->look_down(@{$s->{university}})->as_text();
- my $date = $m->tree->look_down(@{$s->{date}})->as_text();
- my $description = $m->tree->look_down(@{$s->{description}})->as_text();
- my $position = $m->tree->look_down(@{$s->{position}})->as_text();
+ my $university = 'No university';
+ eval {
+ $university = $m->tree->look_down(@{$s->{university}})->as_text();
+ };
+ my $date = $todays_date;
+ eval {
+ $date = $m->tree->look_down(@{$s->{date}})->as_text() // $todays_date if
+ @{$s->{date}};
+ };
+ my $description = 'unknown';
+ eval {
+ $description = $m->tree->look_down(@{$s->{description}})->as_text();
+ };
+ my $position = 'Unknown';
+ eval {
+ $position = $m->tree->look_down(@{$s->{position}})->as_text();
+ };
print format_job($university,$position,$j_u->URI->abs(),$description,$date);
$m->back();
}