User Tools

Site Tools


zz_deprecated:infojobs_spider

Infojobs Spyder

Descripcion

Este script accede a infojobs basándose en una URL predefinida y recorre los identificadores, enviando únicamente los que no ha sido publicados previamente.

Instrucciones

Para que el script funcione, hay que crear el fichero de configuración, el script buscará en su propio directorio los ficheros *.conf para ejecutarlos todos (multiples búsquedas/usuarios). Para obtener la URL de búsqueda, hay que usar alguna extensión que capture los headers que lanza infojobs cuando se ejecuta la misma y luego cambiar la variable o bien, mirar la página de búsqueda y ver que categorías/subcategorías queremos y añadirlas a la URL. Como variables a tener en cuenta de la URL:

Variable Descripcion
inicio=1
No tocarla, es la primera página :P
resultados=1000
Número de resultados que nos muestra la primera página
subcategoria
Las subcategorías, si se usa un conversor html a ascii se verán los caracteres “normales”

Dependencias

  • sqlite3
  • bash >= 3.0
  • wget

Config File

krruke.conf
SEARCHURL='https://www.infojobs.net/jobsearch/search-results/list.xhtml?palabra=&of_area=150&of_pais=17&of_provincia=9&tipo_contrato=0&remuneracion_minima=0&remuneracion_maxima=0&remuneracion_formato=0&antiguedad=2&experiencia=0&ett=true&seleccion=true&inicio=1&inicio=1&&orden=10&poblacion=&nivel_estudios=0&jornada_laboral=0&subcategoria=3114%2C3113%2C3106%2C3107%2C3105%2C3110%2C3111%2C3108%2C3124%2C3109&origen_busqueda=8&origen_accion=4&canal=0&query_id=12573539010&poblacionIdGEO=0&poblacionGEO=&radioGEO=0&upsellings=false'
DBFILE="/home/user/jobs_mailer/user.db"
MAIL="user@monguimail.com"

Script

jobs_mailer.sh
#!/bin/bash
 
TMPFILE="/tmp/jobs_today_$(date +%s).html"
SENDFILE="/tmp/jobs_save_today_$(date +%s).html"
OFFERMARK="table_results_offer"
INFOTAGS="prefijoPuesto prefijoPoblacion prefijoEmpresa"
#AVOIDTHIS="Sant Cugat Del Vall|Sabadell"
AVOIDTHIS="monguiland"
 
get_data()
{
        #wget -O- -q $SEARCHURL | grep -A 6 "<div class=\"cell-text\">$(date +%d/%m)</div>" > $TMPFILE
        local AUXOFFERID=""
        local AUXCOMPANY=""
        local AUXDESC=""
        local AUXURL=""
        wget -O- -q $SEARCHURL | grep -A 15 "<div class=\"cell-text\">$(date +%d/%m)</div>" | egrep "${OFFERMARK}" | awk -F\' '{print $4}' | sed "s,',,g" | head -100 | while read AUXOFFERID
        do
                if [ $(sqlite3 $DBFILE "SELECT count(OFFERID) from offers where OFFERID like '$AUXOFFERID' ;") -eq 0 ]
                then
                        sqlite3 $DBFILE "INSERT INTO offers (id, OFFERID, is_sent) VALUES(NULL, '$AUXOFFERID', 1)  ;"
                fi
        done
}
 
createdb()
{       
        if ! [ -f $DBFILE ]
        then    
                sqlite3 $DBFILE "create table offers (id INTEGER PRIMARY KEY, OFFERID text, is_sent boolean) ;"
        fi
}
 
mailer()
{
        local let UNSENTJOBS=$(sqlite3 $DBFILE "SELECT count(id) from offers where is_sent=1 ;")
        local SENDME=""
        if [ ${UNSENTJOBS} -gt 10 ]
        then
                > $SENDFILE
                sqlite3 $DBFILE "SELECT OFFERID from offers where is_sent=1 ;" | while read AUXOFFERID ; do
                        echo "http://www.infojobs.net/barcelona/linux/of-i${AUXOFFERID}                       " >> $SENDFILE
                        #wget -O- -q "http://www.infojobs.net/barcelona/linux/of-i${AUXOFFERID}" | egrep "${INFOTAGS// /|}"  | awk 'BEGIN{FS = "[<>\"]"} {print $9}' >> $SENDFILE
                        SENDME=$(wget -O- -q "http://www.infojobs.net/barcelona/linux/of-i${AUXOFFERID}" | egrep "${INFOTAGS// /|}"  | awk 'BEGIN{FS = "[<>\"]"} {print $9}')
                        if [ ! "$(echo "${SENDME}" | egrep "${AVOIDTHIS}")" ]; then
                                echo "${SENDME}" >> $SENDFILE
                        else
                                sqlite3 $DBFILE "UPDATE offers set is_sent=0 where OFFERID LIKE '${AUXOFFERID}' ;"
                        fi
                done
                sqlite3 $DBFILE "UPDATE offers set is_sent=0 where is_sent=1 ;"
                cat $SENDFILE | mail -s "Jobs $(date +%Y/%m/%d_%H:%M)" $MAIL
        fi
}
clean_all()
{
        for i in $SENDFILE $TMPFILE
        do
                if [ -f $i ]
                then
                        rm -f $i
                fi
        done
}
for i in $(dirname $0)/*.conf
#for i in $(dirname $0)/jholgado-v3.conf
do
        . $i
        createdb
        get_data
        mailer
        clean_all
done

Programación

Mediante cron se pueden lanzar el script:

0,30    09-20   *       *       1-5             /home/root/jobs_mailer/mail_jobs-02.sh
zz_deprecated/infojobs_spider.txt · Last modified: 2019/07/18 09:17 (external edit)