I have a problem and I can not solve it. I have 2 scripts that make the parse of two different pages. Is it possible for me to create a spider class, start these 2 different urls and create a parse for each url? I created 1 script for each class because I did not find a better way to do it.
Code below:
class Finep_govSpider(scrapy.Spider):
name = "finep_gov"
start_urls = ['http://finep.gov.br/chamadas-publicas?situacao=aberta']
def parse(self, response):
hoje = datetime.now()
for sel in response.css('div.item'):
dat_publicacao = sel.css('div.data_pub span::text').extract_first()
dat_prazo_envio = sel.css('div.prazo span::text').extract_first()
# converte de y-n-d para d/m/y
convert_dat_prazo_envio = datetime.strptime(dat_prazo_envio,
'%d/%m/%Y')
# Se a data do edital for maior que a data de hoje
if hoje <= convert_dat_prazo_envio:
# extrai o link com essa data
link = response.urljoin(first(sel, './/h3/a/@href'))
# armazena tudo em um dicionario
informacoes = {
'link': link,
'data_publicacao': dat_publicacao,
'data_prazo_envio': dat_prazo_envio
}
edital = procura_edital_db(conn, cursor, informacoes['link'])
if not edital:
insere_no_db_edital(conn, cursor, informacoes['link'],
informacoes['data_publicacao'],
informacoes['data_prazo_envio'])
yield informacoes
envia_mensagem_email(conn, cursor)
class CAPES_govSpider(scrapy.Spider):
name = "CAPES_gov"
start_urls = ['http://capes.gov.br/editais-abertos']
def parse(self, response):
for sel in response.css('div.content-container'):
link = response.urljoin(first(sel, './/h3/a/@href'))
data_publicacao = None
data_prazo_envio = None
informacoes = {
'link': link,
'data_publicacao': data_publicacao,
'data_prazo_envio': data_prazo_envio
}
edital = procura_edital_db(conn, cursor, informacoes['link'])
if not edital:
insere_no_db_edital(conn, cursor, informacoes['link'],
informacoes['data_publicacao'],
informacoes['data_prazo_envio'])
yield informacoes
envia_mensagem_email(conn, cursor)
obs: the indentation is halfway here, but in the correct code.