{"id":31591,"date":"2020-09-01T20:12:47","date_gmt":"2020-09-01T20:12:47","guid":{"rendered":"https:\/\/dev.railscarma.com\/data-scraping-in-rails-by-processing-csv\/"},"modified":"2021-06-04T10:22:38","modified_gmt":"2021-06-04T10:22:38","slug":"raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/","title":{"rendered":"Scraping dei dati nelle rotaie mediante elaborazione CSV"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"31591\" class=\"elementor elementor-31591\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ca67ad6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ca67ad6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ddb08bd\" data-id=\"3ddb08bd\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6ba1fdd2 elementor-widget elementor-widget-text-editor\" data-id=\"6ba1fdd2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p>L&#039;applicazione ruby on rails per raschiare il collegamento caricato dal file CSV e<\/p>\n\n\n\n<p>trovare l&#039;occorrenza del collegamento in una pagina particolare.<\/p>\n\n\n\n<p>Nell&#039;applicazione l&#039;utente deve passare un CSV e un elenco di e-mail degli utenti a cui verr\u00e0 inviato il CSV analizzato.<\/p>\n\n\n\n<p>Nel csv ci saranno tre colonne da 2:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>referal_link<\/li><li>home_link<\/li><li>e ci sono valori come di seguito<\/li><\/ul>\n\n\n\n<p>Prima di tutto creeremo l&#039;applicazione dei binari<\/p>\n\n\n\n<p><strong><em>$ lancia il nuovo scrape_data<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>$ cd scrap_data<\/em><\/strong><\/p>\n\n\n\n<p>Quindi genereremo il modulo UploadCsv, eseguiremo il comando seguente<\/p>\n\n\n\n<p><strong><em>$ binari g ponteggio UploadCsv generato_csv:string csv_file:string<\/em><\/strong><\/p>\n\n\n\n<p>Ci\u00f2 creer\u00e0 tutto il modello, il controller e le migrazioni richiesti per csv_file<\/p>\n\n\n\n<p>Quindi inizieremo caricando prima il file nel DB<\/p>\n\n\n\n<p>sostituire il codice seguente nei file&nbsp; <strong><em>app\/views\/upload_csvs\/_form.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>abbiamo aggiunto il codice seguente per caricare il file visualizzato<\/p>\n\n\n\n<p>&lt;%= form_with(model: upload_csv, local: true) esegui |form| %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;% se upload_csv.errors.any? %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &lt;div id=&quot;&rdquo;error_explanation&rdquo;&quot;&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h2&gt;&lt;%= pluralize(upload_csv.errors.count, &ldquo;error&rdquo;) %&gt; ha impedito il salvataggio di questo upload_csv:&lt;\/h2&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ul><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;% upload_csv.errors.full_messages.each fai |messaggio| %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <li>&lt;%= messaggio %&gt;<\/li><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;% fine %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/ul><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &lt;\/div&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;% fine %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;div class=&quot;&rdquo;field&rdquo;&quot;&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &lt;%= form.etichetta :csv_file %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &lt;%= form.file_field :csv_file %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;\/div&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;div class=&quot;&rdquo;actions&rdquo;&quot;&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; &lt;%= form.invia %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;\/div&gt;<\/p>\n\n\n\n<p>&lt;% fine %&gt;<\/p>\n\n\n\n<p>Quindi aggiungeremo la gemma per caricare un file csv_<\/p>\n\n\n\n<p>aggiungi la riga seguente nel file gem<\/p>\n\n\n\n<p>gemma &#039;carrierwave&#039;, &#039;~&gt; 2.0&#039;<\/p>\n\n\n\n<p><strong><em>Installazione del pacchetto $<\/em><\/strong><\/p>\n\n\n\n<p>Quindi creeremo l&#039;uploader in carrierwave<\/p>\n\n\n\n<p><strong><em>I binari $ generano l&#039;avatar dell&#039;uploader<\/em><\/strong><\/p>\n\n\n\n<p>allegheremo l&#039;uploader nel modello<\/p>\n\n\n\n<p><strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>class UploadCsv &lt; ApplicationRecord<\/p>\n\n\n\n<p>&nbsp; mount_uploader:csv_file, AvatarUploader<\/p>\n\n\n\n<p>FINE<\/p>\n\n\n\n<p>prima di procedere oltre controlla che l&#039;applicazione funzioni<\/p>\n\n\n\n<p>esegui i comandi seguenti<\/p>\n\n\n\n<p><strong><em>$ rake db:crea db:migra<\/em><\/strong><\/p>\n\n\n\n<p>aggiornare i percorsi<\/p>\n\n\n\n<p>Rails.application.routes.draw lo fa<\/p>\n\n\n\n<p>&nbsp; risorse: upload_csvs<\/p>\n\n\n\n<p>&nbsp; radice &#039;upload_csvs#index&#039;<\/p>\n\n\n\n<p>FINE<\/p>\n\n\n\n<p><strong><em>Guide $ s<\/em><\/strong><\/p>\n\n\n\n<p>Quindi creeremo un lavoro per leggere il file CSV e ricavare il collegamento da esso<\/p>\n\n\n\n<p>e il file generato verr\u00e0 salvato nella colonna generate_csv di tali record<\/p>\n\n\n\n<p>per generare il lavoro faremo come di seguito<\/p>\n\n\n\n<p><strong><em>Le rotaie $ generano lavoro <\/em>generare<em>_csv<\/em><\/strong><\/p>\n\n\n\n<p>aggiungi la gemma seguente ed esegui l&#039;installazione del bundle<\/p>\n\n\n\n<p>gemma &#039;httparty&#039;<\/p>\n\n\n\n<p>gemma &#039;nokogiri&#039;<\/p>\n\n\n\n<p>quindi sostituiremo il codice con quello riportato di seguito<\/p>\n\n\n\n<p>classe GenrateCsvJob &lt; ApplicationJob<\/p>\n\n\n\n<p>&nbsp; coda_as:predefinito<\/p>\n\n\n\n<p>&nbsp; def esegui(upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; elaborato_csv(carica_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; file = Tempfile.open([\u201c#{Rails.root}\/public\/generated_csv\u201d, &#039;.csv&#039;]) do |csv|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csv &lt;&lt; %w[conteggio link home_link_referal]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @new_array.ognuno fa |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csv &lt;&lt;nuovo_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = &quot;#{Rails.root}\/public\/product_data.csv&quot;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intestazioni = [&#039;link_referal&#039;, &#039;link_home&#039;, &#039;conta&#039;]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file = CSV.open(file, &#039;w&#039;, write_headers: true, headers: headers) do |writer|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @new_array.ognuno fa |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scrittore &lt;&lt;nuovo_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upload_csv.update(generato_csv: file)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; NotificationMailer.send_csv(upload_csv).deliver_now! se @new_array.present?<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; # \u00c8 necessario generare il mailer e seguire i passaggi del mailer<\/p>\n\n\n\n<p>&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp; # Metodo per ottenere il conteggio dei collegamenti e memorizzarli nell&#039;array<\/p>\n\n\n\n<p>&nbsp; def elaborato_csv(upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; @nuovo_array = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; CSV.foreach(upload_csv.csv_file.path, headers: true, header_converters: :symbol) do |row|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; riga_mappa = riga.to_h<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pagina = HTTParty.get(row_map[:refferal_link])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page_parse = Nokogiri::HTML(pagina)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link_array = page_parse.css(&#039;a&#039;).map { |link| collegamento[&#039;href&#039;] }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link_array_group = link_array.group_by(&amp;:itself).map { |k, v| [k, v.lunghezza] }.to_h<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @new_array.push([row_map[:refferal_link], row_map[:home_link], (link_array_group[row_map[:home_link]]).to_s])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; FINE<\/p>\n\n\n\n<p>&nbsp; FINE<\/p>\n\n\n\n<p>FINE<\/p>\n\n\n\n<p>Quindi allegheremo il job after_create di upload_csvs e aggiungeremo la validazione per csv_file require<\/p>\n\n\n\n<p>&nbsp;si prega di aggiornare il codice di&nbsp; <strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>class UploadCsv &lt; ApplicationRecord<\/p>\n\n\n\n<p>&nbsp; mount_uploader:csv_file, AvatarUploader<\/p>\n\n\n\n<p>&nbsp; after_create:processed_csv<\/p>\n\n\n\n<p>&nbsp; def elaborato_csv<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; GenrateCsvJob.perform_later(self)<\/p>\n\n\n\n<p>&nbsp; FINE<\/p>\n\n\n\n<p>FINE<\/p>\n\n\n\n<p>quindi controlla dopo aver caricato il file, il file generato dallo scraping verr\u00e0 aggiornato, puoi controllare il CSV generato<\/p>\n\n\n\n<p>dentro&nbsp; <strong><em>\/scrape_data\/public\/product_data.csv<\/em><\/strong><\/p>\n\n\n\n<p>possiamo inviare tramite e-mail utilizzando le istruzioni seguenti<\/p>\n\n\n\n<p>Per prima cosa genereremo il mailer<\/p>\n\n\n\n<p><strong><em>I binari $ generano il mailer NotificationMailer<\/em><\/strong><\/p>\n\n\n\n<p>aggiornare il codice di <strong><em>app\/mailers\/notification_mailer.rb<\/em><\/strong><\/p>\n\n\n\n<p>&nbsp; def invia_csv(carica_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; @saluto = &#039;Ciao&#039;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; allegati[&#039;parsed.csv&#039;] = File.read(upload_csv.generated_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; mail(a: \u201csample@gmail.com\u201d, oggetto: &#039;CSV analizzato con successo.&#039;)<\/p>\n\n\n\n<p>&nbsp; FINE<\/p>\n\n\n\n<p>FINE<\/p>\n\n\n\n<p>per favore configura anche la configurazione della posta <strong><em>config\/environments\/development.rb o production.rb<\/em><\/strong><\/p>\n\n\n\n<p>aggiungi le righe sottostanti nel file<\/p>\n\n\n\n<p>config.action_mailer.default_url_options = { host: &#039;https:\/\/sample-scrape.herokuapp.com\/&#039; }<\/p>\n\n\n\n<p>config.action_mailer.delivery_method = :smtp<\/p>\n\n\n\n<p>config.action_mailer.smtp_settings = {<\/p>\n\n\n\n<p>&nbsp; nome_utente: &#039;campione@gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; password: &#039;*******123456&#039;,<\/p>\n\n\n\n<p>&nbsp; dominio: &quot;gmail.com&quot;,<\/p>\n\n\n\n<p>&nbsp; indirizzo: &quot;smtp.gmail.com&quot;,<\/p>\n\n\n\n<p>&nbsp; porto: &#039;587&#039;,<\/p>\n\n\n\n<p>&nbsp; autenticazione: :plain<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>config.action_mailer.raise_delivery_errors = falso<\/p>\n\n\n\n<p>e aggiorna anche la vista <strong><em>app\/views\/notification_mailer\/send_csv.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>&lt;h1&gt;Il CSV &egrave; stato elaborato, grazie!&lt;\/h1&gt;<\/p>\n\n\n\n<p>&lt;p&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;%= @greeting %&gt;, controlla l&#039;allegato per ricevere l&#039;e-mail<\/p>\n\n\n\n<p>&lt;\/p&gt;<\/p>\n\n\n\n<p>Grazie !<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-85a87f3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"85a87f3\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0ade7fc\" data-id=\"0ade7fc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3662569 elementor-widget elementor-widget-heading\" data-id=\"3662569\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Iscriviti per gli ultimi aggiornamenti<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74dbb65 elementor-widget elementor-widget-shortcode\" data-id=\"74dbb65\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"caricatore\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Indirizzo e-mail\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nome\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"sottoscrivi\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"it\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Articoli correlati<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gemma di Kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gemma Kaminari\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/gemma-di-kaminari\/?related_post_from=37277\">\r\n        Gemma Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"perch\u00e9 assumere sviluppatori di Ruby on Rails nel 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/perche-assumere-sviluppatori-di-ruby-on-rails\/?related_post_from=30627\">\r\n        Perch\u00e9 assumere sviluppatori Ruby on Rails nel 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/importanza-dellarchitettura-software-nello-sviluppo-di-software-aziendale\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Importanza dell&#039;architettura software nello sviluppo di software aziendale\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/importanza-dellarchitettura-software-nello-sviluppo-di-software-aziendale\/?related_post_from=36250\">\r\n        Importanza dell&#039;architettura software nello sviluppo di software aziendale  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: i migliori IDE per lo sviluppo di Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/ruby-ide-le-migliori-idee-per-lo-sviluppo-di-ruby-on-rails\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"LE MIGLIORI IDEE PER LO SVILUPPO DI RUBY ON RAILS\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: i migliori IDE per lo sviluppo di Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/it\/blog\/roro\/ruby-ide-le-migliori-idee-per-lo-sviluppo-di-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: i migliori IDE per lo sviluppo di Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>The ruby on rails Application to scrape the link uploaded from CSV file and find the occurance of link in particular page. In the application user need to pass a csv and list of users email to whom the parsed CSV will be sent. In the csv there will be three 2 column: refferal_link home_link &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/it\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) with Examples<\/span> Leggi altro \"<\/a><\/p>","protected":false},"author":1,"featured_media":31592,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[],"class_list":["post-31591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Scraping in Rails by Processing CSV - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development<\/title>\n<meta name=\"description\" content=\"The ruby on rails Application to scrape the link uploaded from CSV file and find the occurance of link in particular page. In the application user need to\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Scraping in Rails by Processing CSV - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"og:description\" content=\"The ruby on rails Application to scrape the link uploaded from CSV file and find the occurance of link in particular page. In the application user need to\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-01T20:12:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-04T10:22:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"Data Scraping in Rails by Processing CSV\",\"datePublished\":\"2020-09-01T20:12:47+00:00\",\"dateModified\":\"2021-06-04T10:22:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\"},\"wordCount\":1102,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\",\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\",\"url\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\",\"name\":\"Data Scraping in Rails by Processing CSV - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\",\"datePublished\":\"2020-09-01T20:12:47+00:00\",\"dateModified\":\"2021-06-04T10:22:38+00:00\",\"description\":\"The ruby on rails Application to scrape the link uploaded from CSV file and find the occurance of link in particular page. In the application user need to\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Scraping in Rails by Processing CSV\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Scraping in Rails mediante elaborazione CSV - RailsCarma - Ruby on Rails Development Company specializzata nello sviluppo offshore","description":"L&#039;applicazione ruby on rails per estrarre il collegamento caricato dal file CSV e trovare l&#039;occorrenza del collegamento in una pagina particolare. Nell&#039;applicazione l&#039;utente deve farlo","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/","og_locale":"it_IT","og_type":"article","og_title":"Data Scraping in Rails by Processing CSV - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","og_description":"The ruby on rails Application to scrape the link uploaded from CSV file and find the occurance of link in particular page. In the application user need to","og_url":"https:\/\/www.railscarma.com\/it\/blog\/articoli-tecnici\/raschiamento-dei-dati-nei-binari-mediante-lelaborazione-di-csv\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2020-09-01T20:12:47+00:00","article_modified_time":"2021-06-04T10:22:38+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"Data Scraping in Rails by Processing CSV","datePublished":"2020-09-01T20:12:47+00:00","dateModified":"2021-06-04T10:22:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/"},"wordCount":1102,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png","articleSection":["Technical Articles"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/","url":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/","name":"Data Scraping in Rails mediante elaborazione CSV - RailsCarma - Ruby on Rails Development Company specializzata nello sviluppo offshore","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png","datePublished":"2020-09-01T20:12:47+00:00","dateModified":"2021-06-04T10:22:38+00:00","description":"L&#039;applicazione ruby on rails per estrarre il collegamento caricato dal file CSV e trovare l&#039;occorrenza del collegamento in una pagina particolare. Nell&#039;applicazione l&#039;utente deve farlo","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/09\/DATA-SCRAPING-IN-RAILS-BY-PROCESSING-CSV.png","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"Data Scraping in Rails by Processing CSV"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Societ\u00e0 di sviluppo Ruby on Rails specializzata nello sviluppo offshore","description":"RailsCarma \u00e8 una societ\u00e0 di sviluppo Ruby on Rails a Bangalore. Siamo specializzati nello sviluppo offshore di Ruby on Rails con sede negli Stati Uniti e in India. Assumi sviluppatori esperti di Ruby on Rails per la migliore esperienza Web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"amministratore","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts\/31591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/comments?post=31591"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/posts\/31591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media\/31592"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/media?parent=31591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/categories?post=31591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/it\/wp-json\/wp\/v2\/tags?post=31591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}