Compare commits

..

3 Commits

Author SHA1 Message Date
Yohann Dedy 69f69ba534 README.md : Ajout modèle BDD 2019-12-01 23:42:18 +01:00
Yohann Dedy e6bd517660 Nettoyage url fichier 2019-12-01 22:01:20 +01:00
Yohann Dedy 1b9ac23e85 Récupération infos émission avant épisode 2019-12-01 21:59:56 +01:00
3 changed files with 57 additions and 11 deletions

View File

@ -22,6 +22,10 @@ def clean_html_script(value):
description_full_post = description_re.group(1) + description_re.group(3) description_full_post = description_re.group(1) + description_re.group(3)
yield description_full_post yield description_full_post
def clean_file_url(value):
url = re.match("(.+\.mp3)", value)
yield url.group(1)
class show_Item(scrapy.Item): class show_Item(scrapy.Item):
name = scrapy.Field() name = scrapy.Field()
url_page = scrapy.Field() url_page = scrapy.Field()
@ -38,10 +42,10 @@ class episode_Item(scrapy.Item):
input_processor = MapCompose(clean_text) input_processor = MapCompose(clean_text)
) )
description_full = scrapy.Field( description_full = scrapy.Field(
url_file = scrapy.Field(
default = 'null', default = 'null',
input_processor = MapCompose(clean_html_script) input_processor = MapCompose(clean_file_url)
) )
url_file = scrapy.Field()
url_page = scrapy.Field() url_page = scrapy.Field()
date_diffusion = scrapy.Field() date_diffusion = scrapy.Field()

View File

@ -24,23 +24,24 @@ class GetEpisodesSpider(scrapy.Spider):
} }
def parse(self, response): def parse(self, response):
# page_emission = scrapy.Selector(response) page_emission = scrapy.Selector(response)
# show_loader = ItemLoader(item=show_Item(), selector=page_emission) show_loader = ItemLoader(item=show_Item(), selector=page_emission)
# show_loader.default_output_processor = Join() show_loader.default_output_processor = Join()
# for field, xpath in self.show_fields.items(): for field, xpath in self.show_fields.items():
# show_loader.add_xpath(field, xpath) show_loader.add_xpath(field, xpath)
# show_loader.add_value('url_page', response.url) show_loader.add_value('url_page', response.url)
# yield show_loader.load_item() yield show_loader.load_item()
yield scrapy.Request(url=response.url, callback = self.parse_episodes)
def parse_episodes(self, response):
for sel in response.xpath('//section[@class="emission-diffusions-list"]//a[@class="preview-list-element-link"]/@href'): for sel in response.xpath('//section[@class="emission-diffusions-list"]//a[@class="preview-list-element-link"]/@href'):
url_episode = response.urljoin(sel.extract()) url_episode = response.urljoin(sel.extract())
next_page = response.xpath('//link[@rel="next"]/@href') next_page = response.xpath('//link[@rel="next"]/@href')
yield scrapy.Request(url_episode, callback = self.parse_episode) yield scrapy.Request(url_episode, callback = self.parse_episode)
if next_page: if next_page:
next_url = response.urljoin(next_page.extract_first()) next_url = response.urljoin(next_page.extract_first())
yield scrapy.Request(url=next_url) yield scrapy.Request(url=next_url,callback = self.parse_episodes)
def parse_episode(self, response): def parse_episode(self, response):
page_episode = scrapy.Selector(response) page_episode = scrapy.Selector(response)

View File

@ -11,3 +11,44 @@
* Mettre à disposition un script pour créer la BDD * Mettre à disposition un script pour créer la BDD
* Automatiser le téléchargement des éléments vers un point donné * Automatiser le téléchargement des éléments vers un point donné
* Récupérer les images illustrant les épisodes * Récupérer les images illustrant les épisodes
## Tables de la base RFScraper
'''
CREATE TABLE station(
id serial PRIMARY KEY,
url text UNIQUE NOT NULL
);
CREATE TABLE emission(
id serial PRIMARY KEY,
nom text NOT NULL,
url_page text NOT NULL,
url_rss text,
genre text,
producteur text,
station_id INTEGER REFERENCES station(id)
);
CREATE TABLE episode(
id serial PRIMARY KEY,
titre text NOT NULL,
date_diffusion date,
description_lead text,
description_full text,
id_episode_site int UNIQUE NOT NULL,
emission_id INTEGER REFERENCES emission(id)
);
CREATE TABLE media(
id serial PRIMARY KEY,
url_file text NOT NULL,
filename_orig text NOT NULL,
filename_local text,
size integer NOT NULL,
date_modif date NOT NULL,
md5 text,
duration real,
episode_id INTEGER REFERENCES episode(id)
);
'''