{"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":"grattage-de-donnees-dans-les-rails-en-traitant-csv","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/","title":{"rendered":"R\u00e9cup\u00e9ration de donn\u00e9es dans Rails en traitant 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;application Ruby on Rails pour r\u00e9cup\u00e9rer le lien t\u00e9l\u00e9charg\u00e9 \u00e0 partir du fichier CSV et<\/p>\n\n\n\n<p>trouver l&#039;occurrence d&#039;un lien dans une page particuli\u00e8re.<\/p>\n\n\n\n<p>Dans l&#039;application, l&#039;utilisateur doit transmettre un fichier CSV et une liste de courrier \u00e9lectronique des utilisateurs auxquels le CSV analys\u00e9 sera envoy\u00e9.<\/p>\n\n\n\n<p>Dans le csv, il y aura trois 2 colonnes\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>lien_de r\u00e9f\u00e9rence<\/li><li>lien_accueil<\/li><li>et il y a des valeurs comme ci-dessous<\/li><\/ul>\n\n\n\n<p>Tout d\u2019abord nous allons cr\u00e9er l\u2019application rails<\/p>\n\n\n\n<p><strong><em>$ lance le nouveau scrape_data<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>$ cd scrape_data<\/em><\/strong><\/p>\n\n\n\n<p>Ensuite, nous g\u00e9n\u00e9rerons le module UploadCsv, ex\u00e9cuterons la commande ci-dessous<\/p>\n\n\n\n<p><strong><em>$ rails g \u00e9chafaudage UploadCsv g\u00e9n\u00e9r\u00e9_csv\u00a0:\u00a0cha\u00eene csv_file\u00a0:\u00a0cha\u00eene<\/em><\/strong><\/p>\n\n\n\n<p>Cela cr\u00e9era tous les mod\u00e8les, contr\u00f4leurs et migrations requis pour csv_file<\/p>\n\n\n\n<p>Ensuite, nous commencerons par t\u00e9l\u00e9charger le fichier dans DB<\/p>\n\n\n\n<p>remplacez le code ci-dessous dans les fichiers&nbsp; <strong><em>app\/views\/upload_csvs\/_form.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>nous avons ajout\u00e9 le code ci-dessous pour t\u00e9l\u00e9charger le fichier en vue<\/p>\n\n\n\n<p>&lt;%= form_with(mod\u00e8le : upload_csv, local : true) do |form| %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;% si upload_csv.errors.any\u00a0? %&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; interdit l&amp;#039;enregistrement de ce upload_csv&nbsp;:&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 fait |message| %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <li>&lt;%=message %&gt;<\/li><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;% fin %&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;% fin %&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.label :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.submit %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;\/div&gt;<\/p>\n\n\n\n<p>&lt;% fin %&gt;<\/p>\n\n\n\n<p>Ensuite, nous ajouterons la gemme pour t\u00e9l\u00e9charger un fichier_csv<\/p>\n\n\n\n<p>ajoutez la ligne ci-dessous dans le fichier gem<\/p>\n\n\n\n<p>gemme &#039;carrierwave&#039;, &#039;~&gt; 2.0&#039;<\/p>\n\n\n\n<p><strong><em>Installation du bundle $<\/em><\/strong><\/p>\n\n\n\n<p>Ensuite, nous cr\u00e9erons le t\u00e9l\u00e9chargeur dans Carrierwave<\/p>\n\n\n\n<p><strong><em>Les rails $ g\u00e9n\u00e8rent un avatar de t\u00e9l\u00e9chargeur<\/em><\/strong><\/p>\n\n\n\n<p>nous joindrons le t\u00e9l\u00e9chargeur dans le mod\u00e8le<\/p>\n\n\n\n<p><strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>classe UploadCsv &lt;ApplicationRecord<\/p>\n\n\n\n<p>&nbsp; mount_uploader\u00a0:csv_file, AvatarUploader<\/p>\n\n\n\n<p>fin<\/p>\n\n\n\n<p>avant d&#039;aller plus loin, v\u00e9rifiez simplement que votre application fonctionne<\/p>\n\n\n\n<p>ex\u00e9cuter les commandes ci-dessous<\/p>\n\n\n\n<p><strong><em>$ rake db: cr\u00e9er une base de donn\u00e9es: migrer<\/em><\/strong><\/p>\n\n\n\n<p>mettre \u00e0 jour les itin\u00e9raires<\/p>\n\n\n\n<p>Rails.application.routes.draw faire<\/p>\n\n\n\n<p>&nbsp; ressources\u00a0:upload_csvs<\/p>\n\n\n\n<p>&nbsp; racine &#039;upload_csvs#index&#039;<\/p>\n\n\n\n<p>fin<\/p>\n\n\n\n<p><strong><em>Rails $<\/em><\/strong><\/p>\n\n\n\n<p>Ensuite, nous cr\u00e9erons un Job pour lire le fichier CSV et en extraire le lien<\/p>\n\n\n\n<p>et le fichier g\u00e9n\u00e9r\u00e9 sera enregistr\u00e9 dans la colonne g\u00e9n\u00e9r\u00e9e_csv de ces enregistrements<\/p>\n\n\n\n<p>pour g\u00e9n\u00e9rer le travail, nous ferons comme ci-dessous<\/p>\n\n\n\n<p><strong><em>Les rails $ g\u00e9n\u00e8rent du travail <\/em>g\u00e9n\u00e9rer<em>_csv<\/em><\/strong><\/p>\n\n\n\n<p>ajoutez la gemme ci-dessous et ex\u00e9cutez l&#039;installation du bundle<\/p>\n\n\n\n<p>joyau &#039;httpparty&#039;<\/p>\n\n\n\n<p>gemme &#039;nokogiri&#039;<\/p>\n\n\n\n<p>alors nous remplacerons le code par ci-dessous<\/p>\n\n\n\n<p>classe GenrateCsvJob &lt; ApplicationJob<\/p>\n\n\n\n<p>&nbsp; queue_as\u00a0:\u00a0par d\u00e9faut<\/p>\n\n\n\n<p>&nbsp; def effectuer (upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; trait\u00e9_csv (upload_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[referal_link home_link count]<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @new_array.each fait |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csv &lt;&lt; nouveau_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fichier = \u00ab #{Rails.root}\/public\/product_data.csv \u00bb<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; en-t\u00eates = [&#039;referal_link&#039;, &#039;home_link&#039;, &#039;count&#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.each fait |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u00e9crivain &lt;&lt; new_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upload_csv.update(generated_csv\u00a0: fichier)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fin<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; fin<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; NotificationMailer.send_csv(upload_csv).deliver_now\u00a0! si @new_array.present ?<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; #besoin de g\u00e9n\u00e9rer le mailer et de suivre les \u00e9tapes du mailer<\/p>\n\n\n\n<p>&nbsp; fin<\/p>\n\n\n\n<p>&nbsp; M\u00e9thode # pour obtenir le nombre de liens et les magasins dans le tableau<\/p>\n\n\n\n<p>&nbsp; def trait\u00e9_csv (upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; @new_array = []<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; CSV.foreach(upload_csv.csv_file.path, headers\u00a0: true, header_converters\u00a0: :symbol) do |row|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row_map = rang\u00e9e.to_h<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page = HTTParty.get(row_map[:refferal_link])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page_parse = Nokogiri :: HTML (page)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link_array = page_parse.css(&#039;a&#039;).map { |lien| lien[&#039;href&#039;] }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link_array_group = link_array.group_by(&amp;:lui-m\u00eame).map { |k, v| [k, longueur v.] }.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; fin<\/p>\n\n\n\n<p>&nbsp; fin<\/p>\n\n\n\n<p>fin<\/p>\n\n\n\n<p>Ensuite, nous joindrons le travail after_create de upload_csvs et nous ajouterons la validation pour csv_file require<\/p>\n\n\n\n<p>&nbsp;veuillez mettre \u00e0 jour le code de&nbsp; <strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>classe UploadCsv &lt;ApplicationRecord<\/p>\n\n\n\n<p>&nbsp; mount_uploader\u00a0:csv_file, AvatarUploader<\/p>\n\n\n\n<p>&nbsp; after_create\u00a0:processed_csv<\/p>\n\n\n\n<p>&nbsp; def trait\u00e9_csv<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; GenrateCsvJob.perform_later(self)<\/p>\n\n\n\n<p>&nbsp; fin<\/p>\n\n\n\n<p>fin<\/p>\n\n\n\n<p>puis v\u00e9rifiez apr\u00e8s avoir t\u00e9l\u00e9charg\u00e9 le fichier, votre fichier g\u00e9n\u00e9r\u00e9 par scrape sera mis \u00e0 jour, vous pouvez v\u00e9rifier le csv g\u00e9n\u00e9r\u00e9<\/p>\n\n\n\n<p>\u00e0 l&#039;int\u00e9rieur&nbsp; <strong><em>\/scrape_data\/public\/product_data.csv<\/em><\/strong><\/p>\n\n\n\n<p>nous pouvons envoyer par e-mail en utilisant les instructions ci-dessous<\/p>\n\n\n\n<p>Nous allons d\u2019abord g\u00e9n\u00e9rer le mailer<\/p>\n\n\n\n<p><strong><em>Les rails $ g\u00e9n\u00e8rent le mailer NotificationMailer<\/em><\/strong><\/p>\n\n\n\n<p>mettre \u00e0 jour le code de <strong><em>app\/mailers\/notification_mailer.rb<\/em><\/strong><\/p>\n\n\n\n<p>&nbsp; def send_csv(upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; @greeting = &#039;Bonjour&#039;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; pi\u00e8ces jointes[&#039;parsed.csv&#039;] = Fichier.read(upload_csv.generated_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; mail (\u00e0\u00a0:\u00a0\u00ab\u00a0sample@gmail.com\u00a0\u00bb, sujet\u00a0:\u00a0\u00ab\u00a0CSV est analys\u00e9 avec succ\u00e8s.\u00a0\u00bb)<\/p>\n\n\n\n<p>&nbsp; fin<\/p>\n\n\n\n<p>fin<\/p>\n\n\n\n<p>veuillez configurer \u00e9galement la configuration du courrier <strong><em>config\/environments\/development.rb ou production.rb<\/em><\/strong><\/p>\n\n\n\n<p>ajouter les lignes ci-dessous dans le fichier<\/p>\n\n\n\n<p>config.action_mailer.default_url_options = { h\u00f4te\u00a0: &#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; nom_utilisateur\u00a0: &#039;sample@gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; mot de passe\u00a0: &#039;*******123456&#039;,<\/p>\n\n\n\n<p>&nbsp; domaine\u00a0: &#039;gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; adresse : &#039;smtp.gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; port : &#039;587&#039;,<\/p>\n\n\n\n<p>&nbsp; authentification\u00a0:\u00a0plain<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>config.action_mailer.raise_delivery_errors = faux<\/p>\n\n\n\n<p>et mettez \u00e9galement \u00e0 jour la vue <strong><em>app\/views\/notification_mailer\/send_csv.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>&lt;h1&gt;Le CSV a &eacute;t&eacute; trait&eacute;, merci&nbsp;!&lt;\/h1&gt;<\/p>\n\n\n\n<p>&lt;p&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;%= @greeting %&gt;, veuillez v\u00e9rifier la pi\u00e8ce jointe pour recevoir l&#039;e-mail<\/p>\n\n\n\n<p>&lt;\/p&gt;<\/p>\n\n\n\n<p>Merci !<\/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\">Abonnez-vous pour les derni\u00e8res mises \u00e0 jour<\/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=\"chargeur\"><\/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=\"545688c624\">\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=\"Adresse 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=\"Nom\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"S&#039;abonner\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"fr\"\/><\/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\">Articles Similaires<\/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=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-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=\"joyau 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=\"Gemme de Kaminari\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/articles-techniques\/joyau-kaminari\/?related_post_from=37277\">\r\n        Gemme de Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-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=\"pourquoi embaucher des d\u00e9veloppeurs Ruby on Rails en 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=\"Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/pourquoi-embaucher-des-developpeurs-ruby-on-rails\/?related_post_from=30627\">\r\n        Pourquoi engager des d\u00e9veloppeurs Ruby on Rails en 2026 ?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?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=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" 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=\"Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/importance-de-larchitecture-logicielle-dans-le-developpement-de-logiciels-dentreprise\/?related_post_from=36250\">\r\n        Importance de l&#039;architecture logicielle dans le d\u00e9veloppement de logiciels d&#039;entreprise  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-de-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=\"MEILLEURES ID\u00c9ES POUR LE D\u00c9VELOPPEMENT DE 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\u00a0: les meilleurs IDE pour le d\u00e9veloppement Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ror\/ruby-ide-les-meilleures-idees-pour-le-developpement-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE\u00a0: les meilleurs IDE pour le d\u00e9veloppement 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\/fr\/blog\/third-party-api-integration-solutions-in-ruby-on-rails\/\"> <span class=\"screen-reader-text\">Solutions d'int\u00e9gration d'API tierces en Ruby on Rails<\/span> Lire la suite \u00bb<\/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\/fr\/blog\/articles-techniques\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/blog\/articles-techniques\/grattage-de-donnees-dans-les-rails-en-traitant-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=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\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\":\"fr-FR\",\"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\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@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\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@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\":\"fr-FR\",\"@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":"Scraping de donn\u00e9es dans Rails par traitement CSV - RailsCarma - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement offshore","description":"L&#039;application Ruby on Rails pour r\u00e9cup\u00e9rer le lien t\u00e9l\u00e9charg\u00e9 \u00e0 partir du fichier CSV et trouver l&#039;occurrence du lien dans une page particuli\u00e8re. Dans l&#039;application, l&#039;utilisateur doit","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\/fr\/blog\/articles-techniques\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/","og_locale":"fr_FR","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\/fr\/blog\/articles-techniques\/grattage-de-donnees-dans-les-rails-en-traitant-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":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"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":"fr-FR","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":"Scraping de donn\u00e9es dans Rails par traitement CSV - RailsCarma - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement 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;application Ruby on Rails pour r\u00e9cup\u00e9rer le lien t\u00e9l\u00e9charg\u00e9 \u00e0 partir du fichier CSV et trouver l&#039;occurrence du lien dans une page particuli\u00e8re. Dans l&#039;application, l&#039;utilisateur doit","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@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 - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement offshore","description":"RailsCarma est une soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails \u00e0 Bangalore. Nous sommes sp\u00e9cialis\u00e9s dans le d\u00e9veloppement offshore Ruby on Rails, bas\u00e9s aux \u00c9tats-Unis et en Inde. Embauchez des d\u00e9veloppeurs Ruby on Rails exp\u00e9riment\u00e9s pour une exp\u00e9rience Web ultime.","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":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@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":"administrateur","image":{"@type":"ImageObject","inLanguage":"fr-FR","@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\/fr\/wp-json\/wp\/v2\/posts\/31591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/comments?post=31591"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/31591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media\/31592"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media?parent=31591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/categories?post=31591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/tags?post=31591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}