{"id":4205,"date":"2018-10-02T18:25:36","date_gmt":"2018-10-02T21:25:36","guid":{"rendered":"http:\/\/insightee.com.br\/blog\/?p=4205"},"modified":"2018-11-19T10:28:40","modified_gmt":"2018-11-19T12:28:40","slug":"a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico","status":"publish","type":"post","link":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/","title":{"rendered":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico)"},"content":{"rendered":"<p>Em abril de 2017, escrevi aqui no blog o texto <a href=\"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-redes-sociais-ou-por-que-e-importante-compreende-las\/\"><em>&#8220;A minha saga com redes sociais (ou por que \u00e9 importante compreend\u00ea-las)&#8221;<\/em><\/a>, no qual narrava a minha rela\u00e7\u00e3o com a disciplina de an\u00e1lise de redes sociais, desde o preconceito acad\u00eamico-epistemol\u00f3gico at\u00e9 a inevit\u00e1vel aceita\u00e7\u00e3o e consequente aprendizado (resultante at\u00e9 em <a href=\"https:\/\/www.slideshare.net\/PedroMeirelles5\/smwsp-2018-anlise-de-redes-para-quem-sempre-teve-vergonha-de-perguntar-o-que\">palestra no Social Media Week SP<\/a>). Um ano e cinco meses depois, escrevo este post quase em situa\u00e7\u00e3o e contextos id\u00eanticos, mudando apenas a protagonista: agora, compartilho a minha experi\u00eancia com\u00a0(e a minha reden\u00e7\u00e3o \u00e0 linguagem de programa\u00e7\u00e3o) Python.<\/p>\n<p>Antes de come\u00e7ar, um spoiler: <strong>n\u00e3o sou (nem pretendo ser\/me tornar) um programador<\/strong>, apenas aprendi alguns dos conceitos b\u00e1sicos, modos de aplica\u00e7\u00e3o e pressupostos pr\u00e1ticos. Como escrevi recentemente no \u00faltimo post,\u00a0<a href=\"https:\/\/insightee.com.br\/blog\/pesquisa-em-midias-sociais-na-era-pos-api\/\"><em>Pesquisa em m\u00eddias sociais na era p\u00f3s-API<\/em><\/a>, estamos passando por um momento cr\u00edtico &#8211; uma virada metodol\u00f3gica &#8211; que exige derrubar barreiras e vasculhar alternativas criativas para lidarmos com a situa\u00e7\u00e3o das APIs. O meu interesse e intuito em aprender o b\u00e1sico do b\u00e1sico de <a href=\"https:\/\/www.ibpad.com.br\/blog\/python-o-que-e-e-porque-aprender-1\/\">Python<\/a> foi pr\u00e1tico: eu preciso coletar dados de m\u00eddias sociais e as ferramentas que eu utilizo est\u00e3o cada vez mais limitadas. Como resolver esse problema?<\/p>\n<p>Tudo come\u00e7ou em fevereiro deste ano, quando tivemos um workshop interno no IBPAD sobre aplica\u00e7\u00e3o da <a href=\"https:\/\/cloud.google.com\/vision\/\">Vision API do Google<\/a> para an\u00e1lise automatizada de imagens com intelig\u00eancia artificial. Foi quando instalei o Python pela primeira vez, j\u00e1 que o processo envolvia a utiliza\u00e7\u00e3o de dois scripts; e instalei tamb\u00e9m o Notepad++, provavelmente um dos editores de texto\/c\u00f3digo aberto mais populares do mundo. A simplicidade do projeto (instalar o Python &gt; preparar os datasets CSV &gt; mudar configura\u00e7\u00f5es simples de comando com o Notepad++ &gt; executar o script utilizando o Prompt de Comando) foi fundamental para n\u00e3o me &#8220;assustar&#8221;. Tivesse sido algo mais complexo, talvez eu teria me fechado muito mais.<\/p>\n<p><iframe loading=\"lazy\" style=\"border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/bZUdptsCGveVXU\" width=\"695\" height=\"385\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span> <\/iframe><\/p>\n<p>Um dos primeiros trabalhos que realizamos com esse aprendizado foi esse estudo explorat\u00f3rio da hashtag <em>#f\u00e9rias<\/em> no Instagram, quando analisamos mais de 12.000 publica\u00e7\u00f5es. Embora seja relativamente simples, acho que foi um marco (tanto para o IBPAD quanto para mim) no que se refere \u00e0 abertura de novos horizontes. Depois desse relat\u00f3rio, fizemos v\u00e1rios trabalhos utilizando computa\u00e7\u00e3o visual e intelig\u00eancia artificial em diferentes segmentos\/contextos, como a publica\u00e7\u00e3o\u00a0<a href=\"https:\/\/www.ibpad.com.br\/o-que-fazemos\/publicacoes\/em-busca-melhor-angulo-imagem-dos-presidenciaveis-no-instagram-uma-analise-quanti-qualitativa-com-inteligencia-artificial\/\"><em>&#8220;EM BUSCA DO MELHOR \u00c2NGULO: A imagem dos presidenci\u00e1veis no Instagram \u2013 uma an\u00e1lise quanti-qualitativa com intelig\u00eancia artificial&#8221;<\/em><\/a>, na qual utilizamos m\u00e9todos mistos de an\u00e1lise.<\/p>\n<p>Esse projeto tamb\u00e9m foi importante porque me levou \u00e0 segunda fase com Python: arriscar executar (sozinho) outro script. Precis\u00e1vamos de uma maneira para coletar todas as publica\u00e7\u00f5es dos perfis dos pr\u00e9-candidatos \u00e0 Presid\u00eancia, mas a API do Instagram n\u00e3o fornece acesso a esse tipo de coleta. Foi quando entrou o <a href=\"https:\/\/github.com\/rarcega\/instagram-scraper\">InstagramScraper<\/a>,\u00a0<em>&#8220;uma aplica\u00e7\u00e3o de comando escrita em Python que raspa e faz o download de fotos e v\u00eddeos de um usu\u00e1rio&#8221;<\/em>. Na verdade, \u00e9 muito mais potente: possibilita baixar publica\u00e7\u00f5es de usu\u00e1rios (ou de uma lista de usu\u00e1rios), publica\u00e7\u00f5es com uma hashtag espec\u00edfica, de uma localidade e at\u00e9 mesmo Stories. Foi nesse momento que comecei a &#8220;arriscar&#8221; mais, dentro das possibilidades do &#8211; e das instru\u00e7\u00f5es fornecidas pelo &#8211; script.<\/p>\n<p>Depois de desvendar a coleta de dados do Instagram, queria conseguir fazer o mesmo no Twitter. Foi quando encontrei o <a href=\"https:\/\/github.com\/taspinar\/twitterscraper\/\">TwitterScraper<\/a>, que possui at\u00e9 um <a href=\"http:\/\/twitterscraper.nl\/\">site com uma vers\u00e3o beta\/demo<\/a> para testar a coleta de 1.000 tweets. Al\u00e9m de ser o meu site de rede social favorito, \u00e9 tamb\u00e9m o campo &#8220;oficial&#8221; da <a href=\"https:\/\/insightee.com.br\/blog\/o-nordestino-no-twitter-em-fevereiro-entre-a-politica-o-sotaque-e-a-identidade\/\">minha pesquisa acad\u00eamica<\/a>. Por mais que a Netlytic ainda seja a minha alternativa n\u00famero um (pela praticidade em v\u00e1rios sentidos), h\u00e1 sempre alguma limita\u00e7\u00e3ozinha. Por exemplo, o artigo <em>&#8220;#Casamentoreal: O Discurso Brasileiro no Twitter sobre o Evento da Monarquia Brit\u00e2nica&#8221;<\/em> (no prelo), que <a href=\"https:\/\/insightee.com.br\/blog\/existepesquisanobr-as-narrativas-na-mobilizacao-em-prol-da-ciencia-brasileira\/\">auxiliei na an\u00e1lise com o Wordij<\/a>, teve coleta feita manualmente simplesmente porque n\u00e3o pod\u00edamos retornar mais de sete dias na coleta com a API.<\/p>\n<p>Nesse mesmo per\u00edodo, uma demanda do trabalho exigiu que eu modelasse dados do Twitter, extra\u00eddos a partir de uma ferramenta de monitoramento, de modo a criar um arquivo capaz de gerar uma rede no Gephi (ou seja, uma lista de arestas em CSV com origem e destino). Foi quando encontrei o <a href=\"https:\/\/github.com\/dfreelon\/TSM\">TSM (Twitter Subgraph Manipulator)<\/a>, outro script Python, desenvolvido por <a href=\"http:\/\/dfreelon.org\/\">Dr. Deen Freelon<\/a>, utilizado no fant\u00e1stico projeto <a href=\"http:\/\/cmsimpact.org\/resource\/beyond-hashtags-ferguson-blacklivesmatter-online-struggle-offline-justice\/\"><em>&#8220;Beyond the hashtags: #Ferguson, #Blacklivesmatter, and the online struggle for offline justice&#8221;<\/em><\/a>. Esse foi outro marco na minha rela\u00e7\u00e3o com Python porque, diferente dos scripts que havia utilizado at\u00e9 ent\u00e3o, esse m\u00f3dulo desenvolvido pelo pesquisador era muito mais complexo (do que apenas coletar dados, por exemplo).<\/p>\n<blockquote><p><a href=\"https:\/\/github.com\/dfreelon\/TSM\">Algumas coisas que o TSM consegue fazer<\/a>:<\/p>\n<ul>\n<li>Suportar comunidades muito grandes (milh\u00f5es de n\u00f3s\/arestas) &#8211; o \u00fanico limite \u00e9 a mem\u00f3ria do seu computador;<\/li>\n<li>Extrair retweets e men\u00e7\u00f5es-@ em formado de lista de arestas para an\u00e1lise e visualiza\u00e7\u00e3o de rede;<\/li>\n<li>Dividir parte de redes em comunidades, isolar as comunidades N mais largas e identificar os usu\u00e1rios mais conectados em cada comunidade;<\/li>\n<li>Medir a insularidade de comunidades de uma rede (utilizando \u00edndices EI) para determinar o quanto cada uma delas se parece com uma c\u00e2mara de eco;<\/li>\n<li>Medir a sobreposi\u00e7\u00e3o entre comunidades de uma rede para determinar quais interagem mais ou menos entre si com const\u00e2ncia;<\/li>\n<li>Identificar os retweets mais frequentes numa base de dados do Twitter e ranque\u00e1-las pelo n\u00famero de retweets e por comunidade;<\/li>\n<li>Rastrear comunidades do Twitter (ou de outra fonte) ao passar do tempo: computar placares de similaridade (com ou sem o peso de coeficientes) para comunidades dividas em parte a partir da mesma base de dados em dois recortes de tempo diferentes;<\/li>\n<li>Descobrir quais n\u00f3s s\u00e3o intermedi\u00e1rios entre as comunidades;<\/li>\n<li>Encontrar a hashtag mais utilizada em cada comunidade (ou dataset);<\/li>\n<li>Encontrar os links ou dom\u00ednios web mais utilizados em cada comunidade (ou dataset).<\/li>\n<\/ul>\n<\/blockquote>\n<p>Confesso que me bati um pouco para descobrir como utilizar a fun\u00e7\u00e3o de transformar men\u00e7\u00f5es e retweets em uma lista de arestas. Como minha experi\u00eancia com os outros scripts era limitada a execu\u00e7\u00f5es de uma linha no Prompt de Comando, n\u00e3o foi f\u00e1cil compreender a l\u00f3gica por tr\u00e1s do script para conseguir fazer o que eu queria (e o <em>Read Me<\/em> tamb\u00e9m n\u00e3o ajudou muito, direcionando as instru\u00e7\u00f5es para o arquivo .py j\u00e1 com os c\u00f3digos prontos e suas explica\u00e7\u00f5es pr\u00e1ticas, mas completamente indecifr\u00e1veis para quem n\u00e3o possui experi\u00eancia). Felizmente, como em v\u00e1rios outros pacotes dispon\u00edveis online em plataformas como GitHub, dois arquivos &#8220;demo&#8221; me guiaram pelo caminho a seguir.<\/p>\n<p>O formato .ipynb n\u00e3o me era familiar at\u00e9 ent\u00e3o, portanto tive que recorrer ao Google para &#8211; em mais uma descoberta &#8211; fazer o download e instala\u00e7\u00e3o do <a href=\"http:\/\/jupyter.org\/\">Jupyter Notebook<\/a>. Quando finalmente consegui abrir o arquivo, um dos exemplos trazia exatamente a fun\u00e7\u00e3o que eu queria, mas eu ainda tinha uma d\u00favida: onde eu coloco isso? Tentei, primeiro, direto no Prompt de Comando, j\u00e1 que era o \u00fanico lugar no qual eu j\u00e1 tinha feito algo &#8211; sem sucesso. Sem saber que eu poderia executar ali mesmo no pr\u00f3prio notebook, segui a segunda orienta\u00e7\u00e3o: criei um arquivo .py com apenas o c\u00f3digo do exemplo, substituindo o arquivo .csv e o executei&#8230; Isso mesmo, no Prompt de Comando. Funcionou! Com muito mais trabalho do que o necess\u00e1rio, mas funcionou.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-4212\" src=\"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/notebook-tsm-1024x391.png\" alt=\"\" width=\"980\" height=\"374\" srcset=\"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/notebook-tsm-1024x391.png 1024w, https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/notebook-tsm-300x115.png 300w, https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/notebook-tsm-768x293.png 768w, https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/notebook-tsm.png 1086w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/p>\n<p>Nesse momento o Python j\u00e1 tinha me ganhado. Recapitulando as (minhas) conquistas: conseguia coletar dados do Instagram, utiliz\u00e1-los na Vision API do Google; coletar dados do Twitter (sem as limita\u00e7\u00f5es da API), transform\u00e1-los em listas de arestas para o Gephi e mais algumas outras fun\u00e7\u00f5es interessantes (cheguei a utilizar o c\u00e1lculo de modularidade do pr\u00f3prio m\u00f3dulo em alguns projetos, por exemplo; de resto, n\u00e3o testei as outras fun\u00e7\u00f5es, mas sabia como chegar l\u00e1 &#8211; mesmo aos trancos e barrancos). Ou seja, o meu objetivo inicial &#8211; aprender a coletar dados de m\u00eddias sociais sem depender de ferramentas espec\u00edficas &#8211; j\u00e1 havia sido contemplado, de certa forma.<\/p>\n<p>Foi quando o destino colocou no meu caminho mais uma oportunidade de aprendizado: um workshop gratuito para um seleto grupo de 100 participantes organizado pelo\u00a0<a href=\"https:\/\/www.facebook.com\/hub.ufrj\/\">HUB de Inova\u00e7\u00e3o na UFRJ<\/a>\u00a0sobre <a href=\"https:\/\/www.facebook.com\/events\/2362102900683584\/\">raspagem de dados p\u00fablicos com Python<\/a>. Fiz a minha inscri\u00e7\u00e3o sem muitas expectativas (pela falta de conhecimento no assunto), mas felizmente tive a sorte e oportunidade de ser selecionado para participar desse intensivo de quase 10h num s\u00e1bado. Quem abriu o evento foi a jornalista <a href=\"https:\/\/github.com\/juditecypreste\">Judite Cypreste<\/a>, com a palestra <em>&#8220;Programa\u00e7\u00e3o para jornalistas: descobrindo pautas com Python&#8221;<\/em>, na qual apresentou v\u00e1rios cases legais sobre jornalismo de dados utilizando Python &#8211; a apresenta\u00e7\u00e3o abaixo \u00e9 de outro evento, mas os exemplos utilizados foram os mesmos.<\/p>\n<p><script async class=\"speakerdeck-embed\" data-id=\"96180f99b9174fcab79d2eb96057339a\" data-ratio=\"1.77777777777778\" src=\"\/\/speakerdeck.com\/assets\/embed.js\"><\/script><\/p>\n<p>O workshop, oficialmente intitulado <em>&#8220;N\u00e3o \u00e9 Bruxaria, \u00e9 Pandas!&#8221;<\/em>, foi ministrado por <a href=\"https:\/\/about.me\/fmasanori\">Fernando Masanori<\/a>, professor e palestrante com dezenas de cursos\/apresenta\u00e7\u00f5es em todo o Brasil e a fora. Foram mais ou menos 7 horas (com pausa para o almo\u00e7o, \u00e9 claro) de aprendizado desde a instala\u00e7\u00e3o do Python e alguns dos principais pacotes (requests, beautifulsoup, selenium, pandas, etc.) at\u00e9 exemplos pr\u00e1ticos de an\u00e1lise de dados p\u00fablicos com dataset fornecido pelo professor. Como o workshop foi bastante pr\u00e1tico, n\u00e3o houve uma apresenta\u00e7\u00e3o em PDF ou PPT para guiar o ensino, somente a orienta\u00e7\u00e3o de Masanori a partir de um <a href=\"http:\/\/dontpad.com\/masanoriRJ\">notepad colaborativo<\/a>. Caso tenha interesse, entretanto, ele <a href=\"https:\/\/github.com\/fmasanori\/treinamento\">disponibilizou todo o treinamento (documenta\u00e7\u00e3o e documentos) no GitHub<\/a>.<\/p>\n<p>A oficina foi muito importante para que eu entendesse um pouco melhor a &#8220;l\u00f3gica&#8221; por tr\u00e1s da linguagem. Para entender, por exemplo, como funcionava o Jupyter Notebook e como eu deveria us\u00e1-lo no m\u00f3dulo TSM, quando tive que gerar a lista de arestas. N\u00e3o sa\u00ed de l\u00e1 sabendo programar o que eu quisesse, mas sa\u00ed compreendendo um pouco melhor como se estruturam as fun\u00e7\u00f5es em Python. \u00c9 evidente que ele n\u00e3o passou todas as fun\u00e7\u00f5es de linguagem, mas as principais (mais importantes e simples) foram apresentadas e eu &#8211; obviamente &#8211; anotei tudo para ter um caderno de apoio sempre que precisar utilizar scripts\/m\u00f3dulos de outras pessoas. Ou seja, agora eu posso dizer com seguran\u00e7a que sei o b\u00e1sico do b\u00e1sico.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">My advice on learning Python:<\/p>\n<p>Don&#39;t set out to &quot;learn Python&quot;. Choose a problem you&#39;re interested in and learn to solve it with Python.<\/p>\n<p>&mdash; Jake VanderPlas (@jakevdp) <a href=\"https:\/\/twitter.com\/jakevdp\/status\/906901174728536066?ref_src=twsrc%5Etfw\">September 10, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Refor\u00e7o, entretanto, o que coloquei no in\u00edcio do texto: n\u00e3o \u00e9 a minha pretens\u00e3o &#8211; de forma alguma &#8211; tornar-me um Programador ou at\u00e9 mesmo (oficialmente) um Cientista de Dados. Seguindo o conselho de\u00a0Jake VanderPlas, autor do livro\u00a0<a href=\"https:\/\/t.co\/fAh6eHFa0S\"><em>Python Data Science Handbook<\/em><\/a>, o meu objetivo nunca foi aprender Python; aprender Python foi o meio que encontrei para solucionar o meu problema inicial. Este tweet foi citado no workshop, tamb\u00e9m est\u00e1 na apresenta\u00e7\u00e3o acima e \u00e9 como eu encerro &#8211; por ora &#8211; este texto. Uma dica simples, mas certeira. Se eu tivesse come\u00e7ado somente com o intuito de aprender a linguagem, sendo t\u00e3o de humanas quanto sou, teria sido consumido pelo medo. Agora, posso at\u00e9 colocar no LinkedIn como conhecimento b\u00e1sico (bem b\u00e1sico).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em abril de 2017, escrevi aqui no blog o texto &#8220;A minha saga com redes sociais (ou por que \u00e9 importante compreend\u00ea-las)&#8221;, no qual narrava a minha rela\u00e7\u00e3o com a disciplina de an\u00e1lise de redes sociais, desde o preconceito acad\u00eamico-epistemol\u00f3gico at\u00e9 a inevit\u00e1vel aceita\u00e7\u00e3o e consequente aprendizado (resultante at\u00e9 em palestra no Social Media Week [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4218,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[251,243,250],"class_list":["post-4205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-opiniao","tag-inteligencia-artificial","tag-python","tag-web-scraping"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee<\/title>\n<meta name=\"description\" content=\"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee\" \/>\n<meta property=\"og:description\" content=\"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/\" \/>\n<meta property=\"og:site_name\" content=\"insightee\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pedrormeirelles\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/pedrormeirelles\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-02T21:25:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-19T12:28:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash-1024x576.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Pedro Meirelles\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/peumeirelles\" \/>\n<meta name=\"twitter:site\" content=\"@peumeirelles\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pedro Meirelles\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/\"},\"author\":{\"name\":\"Pedro Meirelles\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/25bb944f37e66a0298f607979c5b0a22\"},\"headline\":\"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico)\",\"datePublished\":\"2018-10-02T21:25:36+00:00\",\"dateModified\":\"2018-11-19T12:28:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/\"},\"wordCount\":1943,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/emile-perron-190221-unsplash.jpg\",\"keywords\":[\"intelig\u00eancia artificial\",\"Python\",\"web scraping\"],\"articleSection\":[\"Opini\u00e3o\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/\",\"url\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/\",\"name\":\"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/emile-perron-190221-unsplash.jpg\",\"datePublished\":\"2018-10-02T21:25:36+00:00\",\"dateModified\":\"2018-11-19T12:28:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/25bb944f37e66a0298f607979c5b0a22\"},\"description\":\"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#primaryimage\",\"url\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/emile-perron-190221-unsplash.jpg\",\"contentUrl\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/emile-perron-190221-unsplash.jpg\",\"width\":5507,\"height\":3098},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/\",\"name\":\"insightee\",\"description\":\"\u00e0 procura do insight perfeito\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/25bb944f37e66a0298f607979c5b0a22\",\"name\":\"Pedro Meirelles\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g\",\"caption\":\"Pedro Meirelles\"},\"description\":\"Mestrando em Cultura e Territorialidades pela Universidade Federal Fluminense, formado em Estudos de M\u00eddia pela mesma institui\u00e7\u00e3o. Interessado em pesquisa digital, m\u00e9todos digitais, an\u00e1lise de dados, cultura, sociedade e Nordeste. Pesquisador no Instituto Brasileiro de Pesquisa e An\u00e1lise de Dados. (+)\",\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pedrormeirelles\",\"http:\\\/\\\/instagram.com\\\/seekpedro\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/meirellespedro\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/peumeirelles\"],\"url\":\"https:\\\/\\\/insightee.com.br\\\/blog\\\/author\\\/pedro-meirelles\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee","description":"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.","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:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/","og_locale":"pt_BR","og_type":"article","og_title":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee","og_description":"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.","og_url":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/","og_site_name":"insightee","article_publisher":"https:\/\/www.facebook.com\/pedrormeirelles","article_author":"https:\/\/www.facebook.com\/pedrormeirelles","article_published_time":"2018-10-02T21:25:36+00:00","article_modified_time":"2018-11-19T12:28:40+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash-1024x576.jpg","type":"image\/jpeg"}],"author":"Pedro Meirelles","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/peumeirelles","twitter_site":"@peumeirelles","twitter_misc":{"Escrito por":"Pedro Meirelles","Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#article","isPartOf":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/"},"author":{"name":"Pedro Meirelles","@id":"https:\/\/insightee.com.br\/blog\/#\/schema\/person\/25bb944f37e66a0298f607979c5b0a22"},"headline":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico)","datePublished":"2018-10-02T21:25:36+00:00","dateModified":"2018-11-19T12:28:40+00:00","mainEntityOfPage":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/"},"wordCount":1943,"commentCount":2,"image":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#primaryimage"},"thumbnailUrl":"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash.jpg","keywords":["intelig\u00eancia artificial","Python","web scraping"],"articleSection":["Opini\u00e3o"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/","url":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/","name":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico) &#8211; insightee","isPartOf":{"@id":"https:\/\/insightee.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#primaryimage"},"image":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#primaryimage"},"thumbnailUrl":"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash.jpg","datePublished":"2018-10-02T21:25:36+00:00","dateModified":"2018-11-19T12:28:40+00:00","author":{"@id":"https:\/\/insightee.com.br\/blog\/#\/schema\/person\/25bb944f37e66a0298f607979c5b0a22"},"description":"Eu tinha um problema que precisava de solu\u00e7\u00e3o. J\u00e1 sem sa\u00eddas conhecidas, encontrei no Python o necess\u00e1rio para contornar essa situa\u00e7\u00e3o.","breadcrumb":{"@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#primaryimage","url":"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash.jpg","contentUrl":"https:\/\/insightee.com.br\/blog\/wp-content\/uploads\/2018\/10\/emile-perron-190221-unsplash.jpg","width":5507,"height":3098},{"@type":"BreadcrumbList","@id":"https:\/\/insightee.com.br\/blog\/a-minha-saga-com-python-ou-como-aprendi-o-basico-do-basico\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/insightee.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"A minha saga com Python (ou como aprendi o b\u00e1sico do b\u00e1sico)"}]},{"@type":"WebSite","@id":"https:\/\/insightee.com.br\/blog\/#website","url":"https:\/\/insightee.com.br\/blog\/","name":"insightee","description":"\u00e0 procura do insight perfeito","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/insightee.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/insightee.com.br\/blog\/#\/schema\/person\/25bb944f37e66a0298f607979c5b0a22","name":"Pedro Meirelles","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/65e627ac6c71e8afcd40409c252c043555caf5da4f58ba46ab903227744c24fd?s=96&d=mm&r=g","caption":"Pedro Meirelles"},"description":"Mestrando em Cultura e Territorialidades pela Universidade Federal Fluminense, formado em Estudos de M\u00eddia pela mesma institui\u00e7\u00e3o. Interessado em pesquisa digital, m\u00e9todos digitais, an\u00e1lise de dados, cultura, sociedade e Nordeste. Pesquisador no Instituto Brasileiro de Pesquisa e An\u00e1lise de Dados. (+)","sameAs":["https:\/\/www.facebook.com\/pedrormeirelles","http:\/\/instagram.com\/seekpedro","https:\/\/www.linkedin.com\/in\/meirellespedro","https:\/\/x.com\/https:\/\/twitter.com\/peumeirelles"],"url":"https:\/\/insightee.com.br\/blog\/author\/pedro-meirelles\/"}]}},"views":19200,"_links":{"self":[{"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/posts\/4205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/comments?post=4205"}],"version-history":[{"count":15,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/posts\/4205\/revisions"}],"predecessor-version":[{"id":4224,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/posts\/4205\/revisions\/4224"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/media\/4218"}],"wp:attachment":[{"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/media?parent=4205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/categories?post=4205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/insightee.com.br\/blog\/wp-json\/wp\/v2\/tags?post=4205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}