reviviendo unoMasuno

parent 753e5c57
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
from collections import OrderedDict
class JsonWriterPipeline(object):
def __init__(self, filename):
self.filename = filename
@classmethod
def from_crawler(cls, crawler):
# Here you get whatever value was passed through the "filename" command line parameter
settings = crawler.settings
filename = settings.get('filename')
# Instantiate the pipeline with the file name
return cls(filename)
def open_spider(self, spider):
self.counter = 0
self.file = open(self.filename, 'w')
self.file.write("[")
def close_spider(self, spider):
self.file.write("]")
self.file.close()
def process_item(self, item, spider):
# print("this is my item", item)
row = []
try:
row.append(("date", item['date']))
except:
pass
try:
row.append(("topic", item['topic']))
except:
pass
try:
row.append(("title", item['title']))
except:
pass
try:
row.append(("author", item['author']))
except:
pass
try:
row.append(("location", item['location']))
except:
pass
try:
row.append(("text", item['text']))
except:
pass
try:
row.append(("url", item['url']))
except:
pass
line = OrderedDict(row)
self.counter += 1
if self.counter == 1:
self.file.write(json.dumps(line))
elif self.counter > 1:
self.file.write(",\n" + json.dumps(line))
return item
# -*- coding: utf-8 -*-
import scrapy, re, json
from unoMasUno.items import NoticiasItem
from datetime import datetime, timedelta, tzinfo
"""
MEDIO:
Uno Más Uno, Yucatán
USO:
scrapy crawl noticias --nolog -s filename=2017-09-22.json -a year=2017 -a month=9 -a day=22
"""
TAG_RE = re.compile(r'<[^>]+>')
def remove_tags(text):
return TAG_RE.sub('', text)
class UTC(tzinfo):
"""clase para el 'time zone' (zona horaria)"""
def utcoffset(self, dt):
# zona horaria para hidalgo (centro de mexico): utc-6
return timedelta(hours=-6)
def tzname(self, dt):
# nombre de la zona horaria
return 'UTC-6'
class QuotesSpider(scrapy.Spider):
name = "noticias"
def start_requests(self):
self.tz = UTC()
self.year = getattr(self, 'year', None)
self.month = getattr(self, 'month', None)
self.day = getattr(self, 'day', None)
self.date_parser = {'enero': 1, 'febrero': 2, 'marzo': 3, 'abril': 4,
'mayo': 5, 'junio': 6, 'julio': 7, 'agosto': 8,
'septiembre': 9, 'octubre': 10, 'noviembre': 11, 'diciembre': 12}
self.baseURL = "http://www.unomasuno.com.mx/" + self.year + "/" + self.month + "/" + self.day
yield scrapy.Request(url=self.baseURL, callback=self.parse)
def parse(self, response):
yield scrapy.Request(url=response.url, callback=self.parse_page, dont_filter=True)
pagination = response.xpath('//*[@class="pagination"]/a[@class="last"]/@href').extract_first()
if pagination is None:
pagination = response.xpath('//*[@class="pagination"]/a/@href').extract()
if len(pagination) > 0:
pagination = pagination[-1].strip('/')
pages = int(pagination[pagination.rfind('/')+1:])
for page in range(1, pages):
yield scrapy.Request(url=self.baseURL+"/page/"+str(page+1), callback=self.parse_page)
else:
pagination = pagination.strip('/')
pages = int(pagination[pagination.rfind('/')+1:])
for page in range(1, pages):
yield scrapy.Request(url=self.baseURL+"/page/"+str(page+1), callback=self.parse_page)
def parse_page(self, response):
for link in response.xpath('//h2[@class="post-box-title"]/a/@href').extract():
yield scrapy.Request(url=link, callback=self.parse_item)
def parse_item(self, response):
item = NoticiasItem()
text = ''
try:
jsonInfo = response.xpath('//script[@type="application/ld+json"]').extract_first()
jsonInfo = json.loads(remove_tags(jsonInfo))
dat = jsonInfo['datePublished']
except:
try:
d = response.xpath('//p[@class="post-meta"]/span/text()').extract_first()
d = d.replace(',', '').split(' ')
dat = datetime(int(d[2]), self.date_parser[d[1].lower()], int(d[0]), tzinfo=self.tz).isoformat("T")
except:
dat = datetime(int(self.year), int(self.month), int(self.day), tzinfo=self.tz).isoformat("T")
item['date'] = dat
item['topic'] = response.xpath('//span[@typeof="v:Breadcrumb"]/a/text()').extract()[1]
item['title'] = response.xpath('//*[@class="post-inner"]/h1/span/text()').extract_first()
for p in response.xpath('//*[@class="entry"]/p').extract():
text += remove_tags(p) + '\n'
item['text'] = text
item['url'] = response.url
# print item['title']
yield item
[
{"date": "2025-03-19T16:32:32", "title": "UAEMéx reconoce actividad de fotoperiodistas en divulgación científica", "text": "En el marco del Día Internacional de la Mujer, la Universidad Autónoma del Estado de México (UAEMéx) y la Asociación de Reporteros Gráficos del Valle de Toluca presentaron el panel “Entre el lente y la ciencia”, en el cual participaron destacadas fotógrafas científicas y fotoreporteras del Valle de Toluca para hablar sobre el papel de la fotografía en la divulgación de la ciencia y el fotoperiodismo.\n\n\n\nEl panel estuvo conformado por la directora General de Comunicación Universitaria de la UAEMéx, Ginarely Valencia Alcántara; la profesora e investigadora del Centro de Investigación y Estudios Avanzados en Salud Animal de la UAEMéx, Celene Salgado Miranda, y la presidenta de la Asociación de Reporteros Gráficos del Valle de Toluca, Liliana Pichardo Morales, y fue moderado por la coordinadora del Nodo Edoméx de la Red Mexicana de Periodistas de Ciencia (RedMPC) y periodista de ciencia de UniRadio 99.7 FM, Saraí Mora Gutiérrez.\n\n\n\nDurante la conversación, las panelistas compartieron su experiencia en la intersección entre la ciencia y la fotografía. Valencia Alcántara, quien es compiladora y autora del libro “Narrar la Ciencia: una Mirada desde el Periodismo”, enfatizó el papel de la imagen como una herramienta para alcanzar audiencias más amplias y diversificadas.\n\n\n\nEn este sentido, Salgado Miranda, especialista en salud animal y fotógrafa de naturaleza, destacó la importancia de documentar el mundo microscópico y biológico, aportando una nueva visión a la divulgación científica, y Pichardo Morales, por su parte, subrayó que la curiosidad es el motor que impulsa al fotoperiodismo y la investigación científica.\n\n\n\n“Como fotoperiodistas de ciencia tenemos una gran responsabilidad con el público porque nuestro trabajo se tiene que entender, y es importante congelar el momento preciso para contar una historia”, indicó Valencia Alcántara.\n\n\n\n\n\n\nAl abordar el papel de las mujeres en esta disciplina, las panelistas coincidieron en que es necesario visibilizar a las científicas y generar espacios que inspiren vocaciones, así como redes de apoyo.\n\n\n\nEn este contexto, Salgado Miranda dijo que “en la sociedad, mujeres y hombres contribuimos a mejorarla, y trabajar por espacios donde haya más mujeres fotoperiodistas es una meta que podemos promover desde la infancia para trabajar unidos”.\n\n\n\nEn cuanto al futuro del fotoperiodismo y la divulgación científica, Pichardo Morales expresó su interés en profundizar su conocimiento, mientras que Salgado Miranda enfatizó la necesidad de seguir documentando la biodiversidad del Estado de México. Valencia Alcántara concluyó que el periodismo científico sigue siendo una necesidad y que, aunque la inteligencia artificial representa un desafío, también puede ser una herramienta para fortalecer el trabajo periodístico.\n\n\n\nAl evento acudieron integrantes de la Dirección General de Comunicación Universitaria y de la Asociación de Reporteros Gráficos del Valle de Toluca, fotoperiodistas del Valle de Toluca, comunidad universitaria y público en general.", "topic": null, "url": "https://unomasuno.com.mx/edomex/uaemex-reconoce-actividad-de-fotoperiodistas-en-divulgacion-cientifica/"},
{"date": "2025-03-19T16:27:15", "title": "Aprueba, “fast track” el Senado permiso para que 155 militares de EU entren armados a México", "text": "Este mismo miércoles, en fast track, la Comisión de Marina del Senado de la República avaló la solicitud presidencial para que&nbsp;155 militares&nbsp;de Estados Unidos ingresen armados a territorio mexicano, a fin de participar en ejercicios de adiestramiento a las fuerzas armadas mexicanas.\n\n\n\nEn la Gaceta Parlamentaria se publicó la solicitud de permiso este miércoles, la cual fue discutida de manera inmediata por dicha comisión legislativa y fue ratificada por el pleno con gran rapidez.", "topic": null, "url": "https://unomasuno.com.mx/nacional/aprueba-fast-track-el-senado-permiso-para-que-155-militares-de-eu-entren-armados-a-mexico/"},
{"date": "2025-03-19T15:47:01", "title": "Bomba de tiempo en AICM por fuga de hidrocarburos en suelo", "text": "Alerta máxima en el Aeropuerto Internacional de la Ciudad de México (AICM), una vez que se ha descubierto la contaminación y los daños irreversibles que se le han hecho al terreno sobre el cual está construido el aeropuerto, provocada por fuga de hidrocarburos. Esta bomba de tiempo no ha podido ser controlada, a pesar de que las autoridades han invertido 50 mdp para remediar el problema, sin resolverlo.\n\n\n\nA pesar de la inversión hecha en estudios y remodelaciones, para identificar el nivel de contaminación en la Estación de Combustibles del AICM, y para remediarlo, a la fecha siguen contaminados más de 14 mil metros cúbicos de subsuelo.\n\n\n\nVale recordar que desde hace 15 años, las autoridades identificaron que el suelo debajo del Aeropuerto Internacional de la Ciudad de México (AICM) está contaminado con hidrocarburos que pueden provocar afectaciones medioambientales, de salud a trabajadores y pudiera generar una tragedia mayor.\n\n\n\nA pesar de que Aeropuertos y Servicios Auxiliares (ASA), la empresa paraestatal que administra la estación de combustibles del AICM, ha gastado casi 50 millones de pesos para identificar la magnitud de la contaminación y remediarla, a la fecha no se ha logrado disminuir los niveles de contaminantes a los límites máximos permisibles.", "topic": null, "url": "https://unomasuno.com.mx/nacional/bomba-de-tiempo-en-aicm-por-fuga-de-hidrocarburos-en-suelo/"},
{"date": "2025-03-19T15:44:08", "title": "Gobierno recorta recursos a estados para combatir violencia y delincuencia organizada", "text": "Las transferencias del gobierno federal a los estados para seguridad, a través del Fondo de Aportaciones para la Seguridad Pública (FASP), disminuyó 41.9% en términos reales desde 2001 a 2024, de acuerdo con estimaciones de TKA Analytica elaboradas con cifras de la Secretaría de Hacienda y Crédito Público (SHCP).\n\n\n\nSe destaca que en medio de la crisis de violencia e inseguridad, el gobierno federal recortó el flujo del dinero etiquetado para que los estados hagan frente a esta problemática que afecta al país desde hace más de 20 años.\n\n\n\n“En general el comportamiento de las aportaciones no ha sido lo que debería ser en los últimos 24 años, y a partir de 2018, empezó a empeorar. Llama la atención los descensos en lo que se transfiere para seguridad a través del FASP, de todos los fondos de aportaciones, este es el único que decreció en términos reales”, apuntó Tamón Takahashi, chief economist de TKA Analytica, centro de análisis e investigación.", "topic": null, "url": "https://unomasuno.com.mx/nacional/gobierno-recorta-recursos-a-estados-para-combatir-violencia-y-delincuencia-organizada/"},
{"date": "2025-03-19T15:41:55", "title": "SCJN batea a aspirantes que buscaban ser jueces", "text": "De manera inobjetable, sin dar pie a desacuerdos o polémicas desgastantes, en un tiempo récord de 4 minutos, la Suprema Corte de Justicia de la Nación (SCJN) bateó ocho recursos de inconformidad de igual número de aspirantes que impugnaron la decisión de los comités de evaluación por dejarlos fuera de las candidaturas a jueces, magistrados y ministros que serán elegidos el próximo 1 de junio a través del voto popular.\n\n\n\nTal como ya se ha adelantado, en una sesión pública de casi cuatro minutos, la presidenta de la Corte, Norma Leticia Piña Hernández, indicó que todas las afectaciones de que se duelen los inconformes son irreparables.\n\n\n\n“A mi juicio, en todos ellos, procede que se desechen por improcedentes, ya que al haber concluida la etapa de selección de candidatos para el proceso electoral de juzgadores 2024-2025, todas las afectaciones de las que se duelen los recurrentes han quedado, en su caso de ser existente, consumadas de forma irreparable”, declaró.", "topic": null, "url": "https://unomasuno.com.mx/nacional/scjn-batea-a-aspirantes-que-buscaban-ser-jueces/"},
{"date": "2025-03-19T15:39:56", "title": "Secretaría de Marina pide 5 mil 984 mdp para nuevas aeronaves", "text": "La Secretaría de Marina (Semar) solicitó un presupuesto de 5 mil 984 millones de pesos para la adquisición de 20 aeronaves, que incluyen 10 aviones y 10 helicópteros, con el objetivo de reforzar sus capacidades operativas en diversas áreas estratégicas en su lucha por erradicar a la delincuencia organizada y la violencia &nbsp; que genera.\n\n\n\nEn dicho proceso también se incluyen la vigilancia de plataformas petroleras, el transporte logístico y las operaciones de rescate en mares y costas del país.\n\n\n\nSegún la documentación presentada por la Semar a la Secretaría de Hacienda y Crédito Público (SHCP), la inseguridad y el incremento de la violencia vinculada al crimen organizado han generado un ambiente de incertidumbre entre la población, afectando tanto a las instituciones públicas como a la convivencia social.", "topic": null, "url": "https://unomasuno.com.mx/nacional/secretaria-de-marina-pide-5-mil-984-mdp-para-nuevas-aeronaves/"},
{"date": "2025-03-19T12:58:12", "title": "Pedro Rodríguez  fortalece lazos en beneficio de los jóvenes atizapenses", "text": "Atizapán de Zaragoza ha dado un paso trascendental en el impulso al desarrollo de su juventud, con la firma de un convenio entre el Instituto Mexiquense de la Juventud (IMJUVE) y el Ayuntamiento. Este acuerdo, promovido con gran visión por el presidente municipal Pedro Rodríguez Villegas, marca un hito en el apoyo a los jóvenes atizapenses.\n\n\n\nLa firma del convenio se realizó en el marco de una exitosa jornada multidisciplinaria que tuvo lugar en la explanada del Palacio Municipal. Este evento, que congregó a diversas instituciones y a la comunidad, fue el escenario ideal para la formalización de este compromiso.\n\n\n\nEste importante acto contó con la presencia de Sergio Jassiel Zamora López, Director del Instituto Mexiquense de la Juventud, así como de Brenda Martines Bautista, Directora de la Juventud del municipio, quienes junto al presidente municipal Pedro Rodríguez Villegas, encabezaron la firma del convenio.\n\n\n\nEl convenio establece líneas de acción concretas para el respaldo a los jóvenes, incluyendo la organización de jornadas multidisciplinarias que acercarán servicios y oportunidades a este sector de la población. Adicionalmente, se impulsarán pláticas en las escuelas sobre temas de relevancia juvenil y se trabajará activamente en la vinculación de futuros profesionistas con instancias clave de los sectores público y privado.\n\n\n\nEl presidente municipal, Pedro Rodríguez Villegas, ha demostrado un firme compromiso con la juventud, impulsando este convenio con la convicción de que invertir en los jóvenes es invertir en el futuro de Atizapán de Zaragoza.\n\n\n\nLa jornada multidisciplinaria, en la que se llevó a cabo esta importante firma, contó con la participación de destacadas personalidades y la activa presencia de la comunidad, reflejando el interés y el compromiso de Atizapán de Zaragoza con el desarrollo integral de sus jóvenes.", "topic": null, "url": "https://unomasuno.com.mx/edomex/pedro-rodriguez-fortalece-lazos-en-beneficio-de-los-jovenes-atizapenses/"},
{"date": "2025-03-19T12:18:22", "title": "Empresas de EU quieren entrar al sector energético; piden a Trump presionar a México", "text": "El Instituto Americano del Petróleo (API) pidió al presidente&nbsp;Donald Trump,&nbsp;presionar&nbsp;a la presidenta&nbsp;Claudia Sheinbaum, a través de la revisión del Tratado entre México, Estados Unidos y Canadá (TMEC) para permitir la inversión de empresas estadunidenses en el sector energético del país.\n\n\n\nEl Instituto Americano del Petróleo rechazó la imposición de aranceles&nbsp;a los mercados de gas natural y petróleo, por considerar que esto tendría consecuencias negativas para los consumidores estadunidenses, además de que retrasaría la agenda de “dominio energético” que espera el gobierno de Trump.&nbsp;", "topic": null, "url": "https://unomasuno.com.mx/nacional/empresas-de-eu-quieren-entrar-al-sector-energetico-piden-a-trump-presionar-a-mexico/"},
{"date": "2025-03-19T11:40:44", "title": "Movilización magisterial recorre la Ciudad rumbo al Zócalo", "text": "Desde las primeras horas de la mañana, docentes provenientes de distintos puntos del país se congregaron en el Hemiciclo a Juárez para iniciar una marcha que tiene como destino final la Plaza de la Constitución. La manifestación, organizada por diversas agrupaciones del sector educativo, busca visibilizar sus demandas y exigir respuestas por parte de las autoridades.\n\n\n\nEl contingente, compuesto por miles de maestros, avanzó por las principales arterias de la capital, generando cortes viales y atrayendo la atención de la ciudadanía. Con pancartas en mano y consignas en favor de mejores condiciones laborales, los manifestantes reiteraron su descontento ante la falta de cumplimiento de acuerdos previos con el gobierno.\n\n\n\nDe acuerdo con los organizadores, esta movilización responde a la necesidad de incrementar el presupuesto destinado a la educación, garantizar estabilidad laboral para los docentes y mejorar la infraestructura en los planteles escolares. Asimismo, hicieron hincapié en la urgencia de revisar las reformas educativas recientes, las cuales consideran perjudiciales para el ejercicio de su profesión.\n\n\n\nLas autoridades capitalinas implementaron un operativo de seguridad y vialidad para minimizar las afectaciones al tránsito y garantizar que la protesta transcurra sin incidentes. Sin embargo, algunos ciudadanos expresaron molestias ante el cierre temporal de calles y avenidas clave.\n\n\n\nSe espera que los manifestantes lleguen al Zócalo en las próximas horas, donde se prevé la realización de un mitin en el que líderes sindicales expondrán las principales exigencias del gremio. Hasta el momento, no se ha reportado ningún incidente grave, y los organizadores han reiterado su compromiso con una manifestación pacífica.\n\n\n\nEl gobierno local aún no ha emitido una postura oficial sobre la protesta, aunque se prevé que en los próximos días se lleven a cabo mesas de diálogo con los representantes del magisterio. Mientras tanto, la movilización continúa avanzando por la ciudad, en una jornada que ha puesto nuevamente sobre la mesa la situación del sector educativo en México.", "topic": null, "url": "https://unomasuno.com.mx/cdmx/movilizacion-magisterial-recorre-la-ciudad-rumbo-al-zocalo/"},
{"date": "2025-03-19T11:00:05", "title": "Surgen versiones distintas entre grupos de buscadores sobre Teuchitlán", "text": "Buscadora Cecilia Flores tacha de mentir a la líder del colectivo&nbsp;Guerreros Buscadores de Jalisco, Indira Navarro, acerca del campo de exterminio en&nbsp;Teuchitlán.&nbsp;\n\n\n\n“Nuestro colectivo está enfocado en lo más urgente e importante: la búsqueda de justicia y verdad. Nuestro compromiso es encontrar a nuestros seres queridos y contribuir a que las madres y familias de México también encuentren a los suyos”, respondió Guerreros Buscadores de&nbsp;Jalisco.&nbsp;", "topic": null, "url": "https://unomasuno.com.mx/nacional/surgen-versiones-distintas-entre-grupos-de-buscadores-sobre-teuchitlan/"},
{"date": "2025-03-19T10:19:58", "title": "Alumno apuñala a maestro en CCH Naucalpan", "text": "Un alumno del CCH Naucalpan de la Universidad Nacional Autónoma de México (UNAM), apuñaló la mañana de este miércoles a su profesor dentro del salón de clases.\n\n\n\nEl maestro está siendo atendido en la enfermería del plantel y se espera el arribo de una ambulancia que va a trasladarlo al hospital.\n\n\n\nPor su parte el agresor ya se encuentra a resguardo en el área jurídica.\n\n\n\n", "topic": null, "url": "https://unomasuno.com.mx/notimomento/alumno-apunala-a-maestro-en-cch-naucalpan/"},
{"date": "2025-03-19T10:18:41", "title": "Patrulla fronteriza de EU incauta más huevos que fentanilo", "text": "La Oficina de Aduanas y Protección Fronteriza de Estados Unidos (CBP) ha informado que, en lo que va de 2025, ha incautado más productos de huevo que kilos de fentanilo en las fronteras del país.\n\n\n\nSegún estadísticas oficiales de la agencia, se han interceptado 5 mil 938 productos de huevo, mientras que las incautaciones de fentanilo ascienden a mil 631 libras (unos 740 kilos) durante el mismo periodo.\n\n\n\nLos números actuales muestran que los esfuerzos de la CBP han derivado en una mayor retención de huevos que de fentanilo, un hecho que ha llamado la atención de los medios y del público en general.", "topic": null, "url": "https://unomasuno.com.mx/nacional/patrulla-fronteriza-de-eu-incauta-mas-huevos-que-fentanilo/"},
{"date": "2025-03-19T10:13:06", "title": "México y Canada “hacen trampa” en el T-MEC: Trump", "text": "El presidente Donald Trump aseguró que&nbsp;México y Canadá hacen trampa&nbsp;en cuanto a la aplicación del tratado comercial con Estados Unidos, el T-MEC.\n\n\n\nDurante una entrevista trasmitida el martes en el programa “Ingraham Angle” de la cadena&nbsp;Fox News,&nbsp;el mandatario estadounidense señaló: “Canadá no gasta en el Ejército. No nos dan nada.&nbsp;Son los peores con quienes negociar”.\n\n\n\n“El T-MEC es bueno, pero hacen trampa…&nbsp;y México también hace trampa”,&nbsp;señaló a continuación.", "topic": null, "url": "https://unomasuno.com.mx/mundo/mexico-y-canada-hacen-trampa-en-el-t-mec-trump/"},
{"date": "2025-03-19T09:27:21", "title": "UAEMéx promueve la cultura del cuidado del agua y conservación de los glaciares", "text": "En el marco del Día Mundial del Agua y en atención al tema “2025, Conservación de los Glaciares” propuesto por la Organización de las Naciones Unidas (ONU), el Instituto Interamericano de Tecnología y Ciencias del Agua (IITCA) de la Universidad Autónoma del Estado de México (UAEMéx), realizó una ceremonia conmemorativa en la que también se otorgaron grados académicos de maestría y doctorado a egresados de los posgrados en Ciencias del Agua.\n\n\n\nEn presencia del director General del Consejo Mexiquense de Ciencia y Tecnología (COMECyT), Víctor Daniel Ávila Akerberg, el encargado del Despacho de la Dirección del IITCA, Carlos Roberto Fonseca Ortiz, mencionó que la conservación de los glaciares es una estrategia de supervivencia para la cual se debe trabajar de manera unida para reducir las emisiones de gases de efecto invernadero y gestionar el agua de deshielo de forma más sostenible para las personas y el planeta.\n\n\n\nAsí mismo, Ávila Akerberg presentó la conferencia magistral “El Gran Bosque de Agua como Reserva Hídrica de Seguridad Nacional”, en la cual expuso los retos más significativos a los que se enfrentan estas áreas, como la tala ilegal de árboles, explotación de los recursos naturales y la falta de conciencia ambiental, los cuales afectan en gran medida a la conservación del líquido vital.\n\n\n\n“Es necesario fortalecer a las comunidades e impulsar políticas públicas para el cuidado del territorio, así como la regulación de la demanda de madera para disminuir las afectaciones hacia la naturaleza”, señaló.\n\n\n\n\n\n\nPosteriormente, se llevó a cabo la presentación de los proyectos de investigación a cargo de las colaboradoras de cátedras y estancias COMECyT a cargo de Rocío Girón Navarro, Cristina Morales Figueroa y Selene Ortíz Velazquez.\n\n\n\nDurante esta jornada, se presentaron videos divulgativos elaborados por académicos del IITCA sobre los Programas de Investigadoras e Investigadores por México y Posdoctorados de la Secretaría de Ciencia, Humanidades, Tecnología e Innovación (SECIHTI). También se exhibió la muestra fotográfica de la serie “Tesoros de nuestras aguas”, organizada por la Dirección de Museos Universitarios de la UAEMéx y se realizaron torneos de ping-pong, básquetbol, carrera y caminata atlética, así como números artísticos.\n\n\n\nEn el acto estuvo presente el jefe de la Unidad de Información, Planeación, Programación y Evaluación de la Secretaría del Campo del Estado de México, Juan Carlos Maya Fuentes; el secretario Técnico de la Secretaría del Agua, Andrés Romo Becerril, la coordinadora de Difusión del IITCA, Maricela Garatachia Contreras y comunidad universitaria.", "topic": null, "url": "https://unomasuno.com.mx/edomex/uaemex-promueve-la-cultura-del-cuidado-del-agua-y-conservacion-de-los-glaciares/"}
]
\ No newline at end of file
...@@ -9,12 +9,13 @@ import scrapy ...@@ -9,12 +9,13 @@ import scrapy
class NoticiasItem(scrapy.Item): class NoticiasItem(scrapy.Item):
# define the fields for your item here like: date = scrapy.Field()
# name = scrapy.Field()
title = scrapy.Field() title = scrapy.Field()
text = scrapy.Field() text = scrapy.Field()
date = scrapy.Field()
location = scrapy.Field() location = scrapy.Field()
author = scrapy.Field() author = scrapy.Field()
topic = scrapy.Field() topic = scrapy.Field()
url = scrapy.Field() url = scrapy.Field()
# define the fields for your item here like:
# name = scrapy.Field()
pass
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json
from collections import OrderedDict
class JsonWriterPipeline(object):
def process_item(self, item, spider):
return item
\ No newline at end of file
...@@ -15,11 +15,12 @@ SPIDER_MODULES = ['unoMasUno.spiders'] ...@@ -15,11 +15,12 @@ SPIDER_MODULES = ['unoMasUno.spiders']
NEWSPIDER_MODULE = 'unoMasUno.spiders' NEWSPIDER_MODULE = 'unoMasUno.spiders'
FEED_EXPORT_ENCODING="utf-8"
# Crawl responsibly by identifying yourself (and your website) on the user-agent # Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'unoMasUno (+http://www.yourdomain.com)' #USER_AGENT = "planaMayor (+http://www.yourdomain.com)"
# Obey robots.txt rules # Obey robots.txt rules
# ROBOTSTXT_OBEY = True ROBOTSTXT_OBEY = False
# Configure maximum concurrent requests performed by Scrapy (default: 16) # Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32 #CONCURRENT_REQUESTS = 32
......
import scrapy
import json
import re
from unoMasUno.items import NoticiasItem
# Expresión regular para eliminar etiquetas HTML
TAG_RE = re.compile(r'<[^>]+>')
def remove_tags(text):
if not isinstance(text, str):
return text # Devuelve el valor original si no es una cadena
return TAG_RE.sub('', text)
class NoticiasSpider(scrapy.Spider):
name = "noticias"
allowed_domains = ["unomasuno.com.mx"]
start_urls = ["https://unomasuno.com.mx/"]
def __init__(self, year=None, month=None, day=None, *args, **kwargs):
super(NoticiasSpider, self).__init__(*args, **kwargs)
self.year = year
self.month = month.zfill(2) if month else None
self.day = day.zfill(2) if day else None
if self.year and self.month and self.day:
self.start_urls = [
f"https://unomasuno.com.mx/wp-json/wp/v2/posts?after={self.year}-{self.month}-{self.day}T00:00:00&before={self.year}-{self.month}-{self.day}T23:59:59&per_page=100"
]
print(self.start_urls[0])
def parse(self, response):
try:
# Intenta decodificar el JSON de la respuesta
data = json.loads(response.text)
self.logger.info(f"Received {len(data)} posts from API.")
except json.JSONDecodeError as e:
# Si hay un error al decodificar el JSON, registra el error y detén el procesamiento
self.logger.error(f"Failed to parse JSON: {e}")
self.logger.error(f"Response content: {response.text[:500]}...") # Logea los primeros 500 caracteres de la respuesta
return
for post in data:
try:
content = post.get('content', {}).get('rendered', '').strip()
if content:
class_list = post.get('class_list', {})
topic = None
if isinstance(class_list, dict):
topic = class_list.get('7', '').split("category-")[1] if '7' in class_list else None
# Preparar item
item = NoticiasItem()
item['date'] = post.get('date')
item['title'] = remove_tags(post.get('title', {}).get('rendered', ''))
item['text'] = remove_tags(content)
item['topic'] = topic
item['url'] = post.get('link')
print(item['title'])
yield item
except Exception as e:
# Si hay un error al procesar un post, registra el error y continúa con el siguiente
self.logger.error(f"Error processing post {post.get('id')}: {e}")
continue
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment