Skip to content

Commit

Permalink
lab3 rein
Browse files Browse the repository at this point in the history
  • Loading branch information
Mariona-FT committed Nov 28, 2023
1 parent a391c3f commit 6232c52
Show file tree
Hide file tree
Showing 16 changed files with 435 additions and 0 deletions.
Binary file added lab3/3REIN-lab.pdf
Binary file not shown.
Binary file added lab3/REIN_ Activitat3.pdf
Binary file not shown.
2 changes: 2 additions & 0 deletions lab3/vogue_lab3/.nfs000000000064b15900000012
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
--------------------
0 Words
60 changes: 60 additions & 0 deletions lab3/vogue_lab3/SearchIndex_vogue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""
.. module:: SearchIndex
SearchIndex
***********
:Description: SearchIndex
Searches for a specific word in the field 'text' (--text) or performs a query (--query) (LUCENE syntax,
between single quotes) in the documents of an index (--index)
:Version:
:Modified on: 29/09/2023
"""
from __future__ import print_function
from elasticsearch import Elasticsearch
from elasticsearch.exceptions import NotFoundError

import argparse

from elasticsearch_dsl import Search
from elasticsearch_dsl.query import Q


if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--index', default=None, required=True, help='Index to search')
parser.add_argument('--query', default=None, nargs=argparse.REMAINDER, help='Lucene query')

args = parser.parse_args()

index = args.index
if args.query:
query = ' '.join(args.query)

try:
client = Elasticsearch()
s = Search(using=client, index=index)

q = Q('query_string', query=query)
s = s.query(q)
response = s[0:10].execute()
#print("response:", response)

for r in response: # display the information that has been indexed for each item
print('TITLE= %s' % r['TITLE'])
print('ARTICLE= %s' % r['ARTICLE'])
print('URL:= %s' % r['URL'])
print('URL:TITLE= %s' % r['URL_TITLE'])
print('DESCRIPTION_= %s' % r['DESCRIPTION'])
print('----------------------------------------')


print ('%d Documents'% response.hits.total.value)
except NotFoundError:
print('Index %s does not exist' % index)

11 changes: 11 additions & 0 deletions lab3/vogue_lab3/scrapy.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = vogue_lab3.settings

[deploy]
#url = http://localhost:6800/
project = vogue_lab3
Empty file.
Empty file.
14 changes: 14 additions & 0 deletions lab3/vogue_lab3/vogue_lab3/items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class VogueLab3Item(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass
103 changes: 103 additions & 0 deletions lab3/vogue_lab3/vogue_lab3/middlewares.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# -*- coding: utf-8 -*-

# Define here the models for your spider middleware
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/spider-middleware.html

from scrapy import signals


class VogueLab3SpiderMiddleware:
# Not all methods need to be defined. If a method is not defined,
# scrapy acts as if the spider middleware does not modify the
# passed objects.

@classmethod
def from_crawler(cls, crawler):
# This method is used by Scrapy to create your spiders.
s = cls()
crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
return s

def process_spider_input(self, response, spider):
# Called for each response that goes through the spider
# middleware and into the spider.

# Should return None or raise an exception.
return None

def process_spider_output(self, response, result, spider):
# Called with the results returned from the Spider, after
# it has processed the response.

# Must return an iterable of Request, dict or Item objects.
for i in result:
yield i

def process_spider_exception(self, response, exception, spider):
# Called when a spider or process_spider_input() method
# (from other spider middleware) raises an exception.

# Should return either None or an iterable of Request, dict
# or Item objects.
pass

def process_start_requests(self, start_requests, spider):
# Called with the start requests of the spider, and works
# similarly to the process_spider_output() method, except
# that it doesn’t have a response associated.

# Must return only requests (not items).
for r in start_requests:
yield r

def spider_opened(self, spider):
spider.logger.info('Spider opened: %s' % spider.name)


class VogueLab3DownloaderMiddleware:
# Not all methods need to be defined. If a method is not defined,
# scrapy acts as if the downloader middleware does not modify the
# passed objects.

@classmethod
def from_crawler(cls, crawler):
# This method is used by Scrapy to create your spiders.
s = cls()
crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
return s

def process_request(self, request, spider):
# Called for each request that goes through the downloader
# middleware.

# Must either:
# - return None: continue processing this request
# - or return a Response object
# - or return a Request object
# - or raise IgnoreRequest: process_exception() methods of
# installed downloader middleware will be called
return None

def process_response(self, request, response, spider):
# Called with the response returned from the downloader.

# Must either;
# - return a Response object
# - return a Request object
# - or raise IgnoreRequest
return response

def process_exception(self, request, exception, spider):
# Called when a download handler or a process_request()
# (from other downloader middleware) raises an exception.

# Must either:
# - return None: continue processing this exception
# - return a Response object: stops process_exception() chain
# - return a Request object: stops process_exception() chain
pass

def spider_opened(self, spider):
spider.logger.info('Spider opened: %s' % spider.name)
58 changes: 58 additions & 0 deletions lab3/vogue_lab3/vogue_lab3/pipelines.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


#class VogueLab3ElasticPipeline:
# def process_item(self, item, spider):
# return item
# -*- 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

from elasticsearch import Elasticsearch

from elasticsearch.exceptions import NotFoundError
from elasticsearch_dsl import Index, analyzer, tokenizer

class VogueLab3ElasticPipeline(object):

collection_name = 'scrapy'

def __init__(self):
self.elastic_uri = 'http://localhost:9200/'
self.elastic_db = 'scrapy'

def open_spider(self, spider):

self.client = Elasticsearch()
try:
# Drop index if it exists
ind = Index(self.elastic_db, using=self.client)
ind.delete()
except NotFoundError:
pass
# then create it
ind.create()
ind.close()
# Configure tokenizer
my_analyzer = analyzer('default', type='custom',
tokenizer=tokenizer('standard'),
filter=['lowercase', 'asciifolding'])
ind.analyzer(my_analyzer)
ind.save()
ind.open()

def close_spider(self, spider):
self.client.close()

def process_item(self, item, spider):
self.client.index(index=self.elastic_db, doc_type='TFG', body=dict(item))

return item
19 changes: 19 additions & 0 deletions lab3/vogue_lab3/vogue_lab3/prova.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[
{"title": "Con sujetador a la vista", "article": ["A medio camino entre el ", " rapero y la tendencia del momento, encontramos la ropa interior a la vista. Gracias al avance del feminismo, convertir las bragas o el sujetador en protagonistas es ya una decisi\u00f3n estil\u00edstica que muchas amamos. Y ", " tambi\u00e9n."], "url": ["https://www.vogue.es/moda/modapedia/personajes/julia-fox/955"]},
{"title": "Vestidos con \u2018memes\u2019", "article": ["El posmodernismo ha llegado para quedarse a la moda. Y ahora es habitual que los ", ", como el del tabloide estadounidense ", ". El fe\u00edsmo pop ahora se ha vuelto deseable."], "url": []},
{"title": "Sandalias con pelo (y colores ne\u00f3n)", "article": ["Otra de las tendencias m\u00e1s inesperadas de esta temporada son las sandalias de tipo peluche, que ya hemos visto en las pasarelas de ", ", y que est\u00e1n m\u00e1s ", " que nunca. Y si se ti\u00f1en de colores ne\u00f3n, mejor que mejor."], "url": ["https://www.vogue.es/moda/articulos/sandalias-pelo-tendencia-otono-invierno-2023-2024"]},
{"title": null, "article": ["Los avances sociales est\u00e1n \u00edntimamente vinculados a las nuevas tendencias imperantes. Una de ellas, el ", ", que consiste en crear nuevas piezas a partir de retales de otras prendas antiguas, ha dejado de ser una an\u00e9cdota y se ha convertido en el emblema de ense\u00f1as como ", ", que firma dise\u00f1os que se convierten en objeto de deseo. Y que ahora amamos."], "url": ["https://www.vogue.es/tags/upcycling", "https://www.vogue.es/moda/articulos/simone-ashley-vestido-conner-ives"]},
{"title": "Lazos XXL", "article": ["Quiz\u00e1s nos parec\u00edan demasiado exc\u00e9ntricos entonces. Pero en 2023 ", ". Y nos atrevemos con los lazos en versi\u00f3n XXL porque el exceso sienta muy bien."], "url": []},
{"title": "Pantalones metalizados", "article": ["Los pantalones se ti\u00f1en de un color que exige un cierto atrevimiento a la hora de vestir, ", ", pero lo cierto es que resulta muy favorecedor. Adem\u00e1s, permite combinarlo con piezas b\u00e1sicas u otras m\u00e1s arriesgadas."], "url": ["https://www.vogue.es/articulos/comprar-pantalones-vaqueros-plateados-metalizado-tendencias-otono-2023"]},
{"title": "Botas con puntera acabada en pico", "article": ["La celebridad ", " acudi\u00f3 a la semana de la moda de Nueva York con unas botas que hubi\u00e9semos aborrecido no hace tanto. Nunca digas de esta agua no beber\u00e9\u2026"], "url": ["https://www.vogue.es/moda/modapedia/personajes/emily-ratajkowski/575"]},
{"title": "Todes con falda", "article": ["Los avances sociales tambi\u00e9n han permitido que los hombres se atrevan con las faldas sin miedo al qu\u00e9 dir\u00e1n. Antes que ellos, ", " de una tendencia que ahora cada vez se visibiliza (y normaliza) m\u00e1s."], "url": ["https://www.vogue.es/articulos/david-beckham-sarong-metrosexual-moda-futbol-masculino"]}
][
{"title": "Con sujetador a la vista", "article": ["A medio camino entre el ", " rapero y la tendencia del momento, encontramos la ropa interior a la vista. Gracias al avance del feminismo, convertir las bragas o el sujetador en protagonistas es ya una decisi\u00f3n estil\u00edstica que muchas amamos. Y ", " tambi\u00e9n."], "url": ["https://www.vogue.es/moda/modapedia/personajes/julia-fox/955"]},
{"title": "Vestidos con \u2018memes\u2019", "article": ["El posmodernismo ha llegado para quedarse a la moda. Y ahora es habitual que los ", ", como el del tabloide estadounidense ", ". El fe\u00edsmo pop ahora se ha vuelto deseable."], "url": []},
{"title": "Sandalias con pelo (y colores ne\u00f3n)", "article": ["Otra de las tendencias m\u00e1s inesperadas de esta temporada son las sandalias de tipo peluche, que ya hemos visto en las pasarelas de ", ", y que est\u00e1n m\u00e1s ", " que nunca. Y si se ti\u00f1en de colores ne\u00f3n, mejor que mejor."], "url": ["https://www.vogue.es/moda/articulos/sandalias-pelo-tendencia-otono-invierno-2023-2024"]},
{"title": null, "article": ["Los avances sociales est\u00e1n \u00edntimamente vinculados a las nuevas tendencias imperantes. Una de ellas, el ", ", que consiste en crear nuevas piezas a partir de retales de otras prendas antiguas, ha dejado de ser una an\u00e9cdota y se ha convertido en el emblema de ense\u00f1as como ", ", que firma dise\u00f1os que se convierten en objeto de deseo. Y que ahora amamos."], "url": ["https://www.vogue.es/tags/upcycling", "https://www.vogue.es/moda/articulos/simone-ashley-vestido-conner-ives"]},
{"title": "Lazos XXL", "article": ["Quiz\u00e1s nos parec\u00edan demasiado exc\u00e9ntricos entonces. Pero en 2023 ", ". Y nos atrevemos con los lazos en versi\u00f3n XXL porque el exceso sienta muy bien."], "url": []},
{"title": "Pantalones metalizados", "article": ["Los pantalones se ti\u00f1en de un color que exige un cierto atrevimiento a la hora de vestir, ", ", pero lo cierto es que resulta muy favorecedor. Adem\u00e1s, permite combinarlo con piezas b\u00e1sicas u otras m\u00e1s arriesgadas."], "url": ["https://www.vogue.es/articulos/comprar-pantalones-vaqueros-plateados-metalizado-tendencias-otono-2023"]},
{"title": "Botas con puntera acabada en pico", "article": ["La celebridad ", " acudi\u00f3 a la semana de la moda de Nueva York con unas botas que hubi\u00e9semos aborrecido no hace tanto. Nunca digas de esta agua no beber\u00e9\u2026"], "url": ["https://www.vogue.es/moda/modapedia/personajes/emily-ratajkowski/575"]},
{"title": "Todes con falda", "article": ["Los avances sociales tambi\u00e9n han permitido que los hombres se atrevan con las faldas sin miedo al qu\u00e9 dir\u00e1n. Antes que ellos, ", " de una tendencia que ahora cada vez se visibiliza (y normaliza) m\u00e1s."], "url": ["https://www.vogue.es/articulos/david-beckham-sarong-metrosexual-moda-futbol-masculino"]}
]
10 changes: 10 additions & 0 deletions lab3/vogue_lab3/vogue_lab3/prova2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[
{"title": "Con sujetador a la vista", "article": ["A medio camino entre el ", " rapero y la tendencia del momento, encontramos la ropa interior a la vista. Gracias al avance del feminismo, convertir las bragas o el sujetador en protagonistas es ya una decisi\u00f3n estil\u00edstica que muchas amamos. Y ", " tambi\u00e9n."], "url": ["https://www.vogue.es/moda/modapedia/personajes/julia-fox/955"]},
{"title": "Vestidos con \u2018memes\u2019", "article": ["El posmodernismo ha llegado para quedarse a la moda. Y ahora es habitual que los ", ", como el del tabloide estadounidense ", ". El fe\u00edsmo pop ahora se ha vuelto deseable."], "url": []},
{"title": "Sandalias con pelo (y colores ne\u00f3n)", "article": ["Otra de las tendencias m\u00e1s inesperadas de esta temporada son las sandalias de tipo peluche, que ya hemos visto en las pasarelas de ", ", y que est\u00e1n m\u00e1s ", " que nunca. Y si se ti\u00f1en de colores ne\u00f3n, mejor que mejor."], "url": ["https://www.vogue.es/moda/articulos/sandalias-pelo-tendencia-otono-invierno-2023-2024"]},
{"title": null, "article": ["Los avances sociales est\u00e1n \u00edntimamente vinculados a las nuevas tendencias imperantes. Una de ellas, el ", ", que consiste en crear nuevas piezas a partir de retales de otras prendas antiguas, ha dejado de ser una an\u00e9cdota y se ha convertido en el emblema de ense\u00f1as como ", ", que firma dise\u00f1os que se convierten en objeto de deseo. Y que ahora amamos."], "url": ["https://www.vogue.es/tags/upcycling", "https://www.vogue.es/moda/articulos/simone-ashley-vestido-conner-ives"]},
{"title": "Lazos XXL", "article": ["Quiz\u00e1s nos parec\u00edan demasiado exc\u00e9ntricos entonces. Pero en 2023 ", ". Y nos atrevemos con los lazos en versi\u00f3n XXL porque el exceso sienta muy bien."], "url": []},
{"title": "Pantalones metalizados", "article": ["Los pantalones se ti\u00f1en de un color que exige un cierto atrevimiento a la hora de vestir, ", ", pero lo cierto es que resulta muy favorecedor. Adem\u00e1s, permite combinarlo con piezas b\u00e1sicas u otras m\u00e1s arriesgadas."], "url": ["https://www.vogue.es/articulos/comprar-pantalones-vaqueros-plateados-metalizado-tendencias-otono-2023"]},
{"title": "Botas con puntera acabada en pico", "article": ["La celebridad ", " acudi\u00f3 a la semana de la moda de Nueva York con unas botas que hubi\u00e9semos aborrecido no hace tanto. Nunca digas de esta agua no beber\u00e9\u2026"], "url": ["https://www.vogue.es/moda/modapedia/personajes/emily-ratajkowski/575"]},
{"title": "Todes con falda", "article": ["Los avances sociales tambi\u00e9n han permitido que los hombres se atrevan con las faldas sin miedo al qu\u00e9 dir\u00e1n. Antes que ellos, ", " de una tendencia que ahora cada vez se visibiliza (y normaliza) m\u00e1s."], "url": ["https://www.vogue.es/articulos/david-beckham-sarong-metrosexual-moda-futbol-masculino"]}
]
Loading

0 comments on commit 6232c52

Please sign in to comment.