{"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":"dataskrapning-i-skenor-genom-att-bearbeta-csv","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-csv\/","title":{"rendered":"Dataskrapning i skenor genom att bearbeta 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>The ruby on rails Ans\u00f6kan om att skrapa l\u00e4nken uppladdad fr\u00e5n CSV-fil och<\/p>\n\n\n\n<p>hitta f\u00f6rekomsten av l\u00e4nk p\u00e5 en viss sida.<\/p>\n\n\n\n<p>I applikationen m\u00e5ste anv\u00e4ndaren skicka en csv och en lista \u00f6ver anv\u00e4ndarnas e-post till vilka den analyserade CSV:en kommer att skickas.<\/p>\n\n\n\n<p>I csv kommer det att finnas tre 2 kolumner:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>refferal_link<\/li><li>home_link<\/li><li>och det finns v\u00e4rden som nedan<\/li><\/ul>\n\n\n\n<p>F\u00f6rst och fr\u00e4mst kommer vi att skapa rails-applikationen<\/p>\n\n\n\n<p><strong><em>$ rails nya scrape_data<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>$ cd scrape_data<\/em><\/strong><\/p>\n\n\n\n<p>Sedan genererar vi UploadCsv-modulen, k\u00f6r kommandot nedan<\/p>\n\n\n\n<p><strong><em>$ skenor g st\u00e4llning UploadCsv generated_csv:string csv_file:string<\/em><\/strong><\/p>\n\n\n\n<p>Det kommer att skapa alla n\u00f6dv\u00e4ndiga modeller, kontroller och migrationer f\u00f6r csv_file<\/p>\n\n\n\n<p>D\u00e5 b\u00f6rjar vi med att f\u00f6rst ladda upp filen i DB<\/p>\n\n\n\n<p>ers\u00e4tt nedanst\u00e5ende kod i filer&nbsp; <strong><em>app\/views\/upload_csvs\/_form.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>vi har lagt till koden nedan f\u00f6r att ladda upp filen<\/p>\n\n\n\n<p>&lt;%= form_with(modell: upload_csv, lokal: true) g\u00f6r |form| %&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;% om 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; f&ouml;rbj&ouml;d denna upload_csv fr&aring;n att sparas:&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 do |message| %&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <li>&lt;%= meddelande %&gt;<\/li><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;% slut %&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;% slut %&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.filf\u00e4lt :csv_fil %&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;% slut %&gt;<\/p>\n\n\n\n<p>Sedan l\u00e4gger vi till p\u00e4rlan f\u00f6r att ladda upp en csv_file<\/p>\n\n\n\n<p>l\u00e4gg till raden nedan i gem-filen<\/p>\n\n\n\n<p>gem &#039;carrierwave&#039;, &#039;~&gt; 2.0&#039;<\/p>\n\n\n\n<p><strong><em>$-paketinstallation<\/em><\/strong><\/p>\n\n\n\n<p>Sedan skapar vi uppladdningsprogrammet i carrierwave<\/p>\n\n\n\n<p><strong><em>$-skenor genererar uppladdningsavatar<\/em><\/strong><\/p>\n\n\n\n<p>vi kommer att bifoga uppladdaren i modellen<\/p>\n\n\n\n<p><strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>klass UploadCsv &lt; ApplicationRecord<\/p>\n\n\n\n<p>&nbsp; mount_uploader :csv_file, AvatarUploader<\/p>\n\n\n\n<p>slutet<\/p>\n\n\n\n<p>innan du g\u00e5r vidare, kontrollera bara att din applikation fungerar<\/p>\n\n\n\n<p>k\u00f6r under kommandon<\/p>\n\n\n\n<p><strong><em>$ rake db:create db:migrate<\/em><\/strong><\/p>\n\n\n\n<p>uppdatera rutterna<\/p>\n\n\n\n<p>Rails.application.routes.draw g\u00f6r<\/p>\n\n\n\n<p>&nbsp; resurser :upload_csvs<\/p>\n\n\n\n<p>&nbsp; root &#039;upload_csvs#index&#039;<\/p>\n\n\n\n<p>slutet<\/p>\n\n\n\n<p><strong><em>$ skenor s<\/em><\/strong><\/p>\n\n\n\n<p>Sedan skapar vi ett jobb f\u00f6r att l\u00e4sa CSV-filen och skrapa l\u00e4nken fr\u00e5n den<\/p>\n\n\n\n<p>och den genererade filen kommer att sparas i kolumnen genered_csv i den posten<\/p>\n\n\n\n<p>f\u00f6r att skapa jobbet kommer vi att g\u00f6ra som nedan<\/p>\n\n\n\n<p><strong><em>$-skenor genererar jobb <\/em>generera<em>_csv<\/em><\/strong><\/p>\n\n\n\n<p>l\u00e4gg till p\u00e4rlan nedan och k\u00f6r paketinstallationen<\/p>\n\n\n\n<p>p\u00e4rla &#039;httparty&#039;<\/p>\n\n\n\n<p>p\u00e4rla &#039;nokogiri&#039;<\/p>\n\n\n\n<p>d\u00e5 ers\u00e4tter vi koden med nedan<\/p>\n\n\n\n<p>klass GenrateCsvJob &lt; ApplicationJob<\/p>\n\n\n\n<p>&nbsp; queue_as :default<\/p>\n\n\n\n<p>&nbsp; def perform(upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; processed_csv(upload_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; fil = Tempfile.open([\u201c#{Rails.root}\/public\/generated_csv\u201d, &#039;.csv&#039;]) till |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 g\u00f6r |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csv &lt;&lt; new_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; slutet<\/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; headers = [&#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 g\u00f6r |new_array|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f\u00f6rfattare &lt;&lt; new_array<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; slutet<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upload_csv.update(generated_csv: fil)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; slutet<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; slutet<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; NotificationMailer.send_csv(upload_csv).deliver_now! om @new_array.present?<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; 1TP5M\u00e5ste generera f\u00f6rs\u00e4ndelsen och f\u00f6lja stegen f\u00f6r f\u00f6rs\u00e4ndelsen<\/p>\n\n\n\n<p>&nbsp; slutet<\/p>\n\n\n\n<p>&nbsp; # Metod f\u00f6r att f\u00e5 l\u00e4nkr\u00e4kningen och lagrar i arrayen<\/p>\n\n\n\n<p>&nbsp; def processed_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: true, header_converters: :symbol) g\u00f6r |rad|<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rad_karta = rad.till_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 { |l\u00e4nk| l\u00e4nk[&#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.l\u00e4ngd] }.till_h<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @new_array.push([radkarta[:refferal_l\u00e4nk], radkarta[:heml\u00e4nk], (l\u00e4nkarraygrupp[radkarta[:heml\u00e4nk]]).to_s])<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; slutet<\/p>\n\n\n\n<p>&nbsp; slutet<\/p>\n\n\n\n<p>slutet<\/p>\n\n\n\n<p>Sedan bifogar vi jobbet after_create av upload_csvs och vi l\u00e4gger till valideringen f\u00f6r csv_file require<\/p>\n\n\n\n<p>&nbsp;v\u00e4nligen uppdatera koden f\u00f6r&nbsp; <strong><em>app\/models\/upload_csv.rb<\/em><\/strong><\/p>\n\n\n\n<p>klass 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 processed_csv<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; GenrateCsvJob.perform_later(self)<\/p>\n\n\n\n<p>&nbsp; slutet<\/p>\n\n\n\n<p>slutet<\/p>\n\n\n\n<p>kontrollera sedan efter uppladdning av filen din scrape-genererade fil kommer att uppdateras du kan kontrollera genererad csv<\/p>\n\n\n\n<p>inuti&nbsp; <strong><em>\/scrape_data\/public\/product_data.csv<\/em><\/strong><\/p>\n\n\n\n<p>vi kan skicka via e-post genom att anv\u00e4nda instruktionerna nedan<\/p>\n\n\n\n<p>F\u00f6rst kommer vi att generera f\u00f6rs\u00e4ndelsen<\/p>\n\n\n\n<p><strong><em>$-skenor genererar mailer NotificationMailer<\/em><\/strong><\/p>\n\n\n\n<p>uppdatera koden f\u00f6r <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;Hej&#039;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; attachments[&#039;parsed.csv&#039;] = File.read(upload_csv.generated_csv)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; mail(till: &quot;sample@gmail.com&quot;, \u00e4mne: &#039;CSV har analyserats framg\u00e5ngsrikt.&#039;)<\/p>\n\n\n\n<p>&nbsp; slutet<\/p>\n\n\n\n<p>slutet<\/p>\n\n\n\n<p>v\u00e4nligen konfigurera e-postkonfigurationen ocks\u00e5 <strong><em>config\/environments\/development.rb eller production.rb<\/em><\/strong><\/p>\n\n\n\n<p>l\u00e4gg till nedanst\u00e5ende rader i filen<\/p>\n\n\n\n<p>config.action_mailer.default_url_options = { v\u00e4rd: &#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; anv\u00e4ndarnamn: &#039;exempel@gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; l\u00f6senord: &#039;*******123456&#039;,<\/p>\n\n\n\n<p>&nbsp; dom\u00e4n: &#039;gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; adress: &#039;smtp.gmail.com&#039;,<\/p>\n\n\n\n<p>&nbsp; port: &#039;587&#039;,<\/p>\n\n\n\n<p>&nbsp; autentisering: :plain<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>config.action_mailer.raise_delivery_errors = falskt<\/p>\n\n\n\n<p>och uppdatera vyn ocks\u00e5 <strong><em>app\/views\/notification_mailer\/send_csv.html.erb<\/em><\/strong><\/p>\n\n\n\n<p>&lt;h1&gt;CSV har bearbetats, tack!&lt;\/h1&gt;<\/p>\n\n\n\n<p>&lt;p&gt;<\/p>\n\n\n\n<p>&nbsp; &lt;%= @h\u00e4lsning %&gt;, kontrollera bilagan f\u00f6r att f\u00e5 e-postmeddelandet<\/p>\n\n\n\n<p>&lt;\/p&gt;<\/p>\n\n\n\n<p>Tack !<\/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\">Prenumerera f\u00f6r de senaste uppdateringarna<\/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=\"lastare\"><\/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=\"E-postadress\">\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=\"namn\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Prenumerera\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"sv\"\/><\/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\">relaterade inl\u00e4gg<\/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=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?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=\"kaminari p\u00e4rla\" 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=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?related_post_from=37277\">\r\n        Kaminari Gem  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-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=\"varf\u00f6r anlita utvecklare av ruby on rails 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=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-ruby-on-rails\/?related_post_from=30627\">\r\n        Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/vikten-av-mjukvaruarkitektur-i-foretagsutveckling-av-programvara\/?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=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" 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=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/vikten-av-mjukvaruarkitektur-i-foretagsutveckling-av-programvara\/?related_post_from=36250\">\r\n        Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/ruby-ide-de-basta-ideerna-for-ruby-on-rails-utveckling\/?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=\"B\u00c4STA ID\u00c9ER F\u00d6R UTVECKLING AV RUBY ON RAIL\" 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: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/ruby-ide-de-basta-ideerna-for-ruby-on-rails-utveckling\/?related_post_from=36125\">\r\n        Ruby IDE: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development  <\/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 Ans\u00f6kan f\u00f6r att skrapa l\u00e4nken uppladdad fr\u00e5n CSV-fil och hitta f\u00f6rekomsten av l\u00e4nken p\u00e5 en viss sida. I applikationen m\u00e5ste anv\u00e4ndaren skicka en csv och en lista \u00f6ver anv\u00e4ndarnas e-post till vilka den analyserade CSV:en kommer att skickas. I csv-filen kommer det att finnas tre 2 kolumner: refferal_link home_link \u2026<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) med exempel<\/span> L\u00e4s mer \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\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-csv\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-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=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuter\" \/>\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\":\"sv-SE\",\"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\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\",\"@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":"Dataskrapning i Rails genom att bearbeta CSV - RailsCarma - Ruby on Rails Development Company specialiserat p\u00e5 Offshore Development","description":"The ruby on rails Ans\u00f6kan f\u00f6r att skrapa l\u00e4nken uppladdad fr\u00e5n CSV-fil och hitta f\u00f6rekomsten av l\u00e4nken p\u00e5 en viss sida. I applikationen beh\u00f6ver anv\u00e4ndaren","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\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-csv\/","og_locale":"sv_SE","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\/sv\/blogg\/tekniska-artiklar\/dataskrapning-i-skenor-genom-att-bearbeta-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":{"Skriven av":"admin","Ber\u00e4knad l\u00e4stid":"6 minuter"},"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":"sv-SE","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":"Dataskrapning i Rails genom att bearbeta CSV - RailsCarma - Ruby on Rails Development Company specialiserat p\u00e5 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 Ans\u00f6kan f\u00f6r att skrapa l\u00e4nken uppladdad fr\u00e5n CSV-fil och hitta f\u00f6rekomsten av l\u00e4nken p\u00e5 en viss sida. I applikationen beh\u00f6ver anv\u00e4ndaren","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/fr\/blog\/technical-articles\/grattage-de-donnees-dans-les-rails-en-traitant-csv\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@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 specialiserat p\u00e5 Offshore Development","description":"RailsCarma \u00e4r ett Ruby on Rails Development Company i Bangalore. Vi \u00e4r specialiserade p\u00e5 Offshore Ruby on Rails Development baserat i USA och Indien. Anst\u00e4ll erfarna Ruby on Rails-utvecklare f\u00f6r den ultimata webbupplevelsen.","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":"sv-SE"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@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":"administration","image":{"@type":"ImageObject","inLanguage":"sv-SE","@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\/sv\/wp-json\/wp\/v2\/posts\/31591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/comments?post=31591"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts\/31591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media\/31592"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media?parent=31591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/categories?post=31591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/tags?post=31591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}