<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Barbara Reis Bayer - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Barbara Reis Bayer - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 19:16:33 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/author/barbara/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Tutorial de scraping de dados da Web com Python – como fazer scraping de dados de um site da web ]]>
                </title>
                <description>
                    <![CDATA[ O Python é uma linguagem linda de se programar. Com um ecossistema de pacotes maravilhoso, nela, há bem menos ruído que em outras linguagens, além de ser muito fácil de usar. O Python pode ser usado para várias coisas – desde a análise de dados até a programação em back-end. ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tutorial-de-scraping-de-dados-da-web-com-python-como-fazer-scraping-de-dados-de-um-site-da-web/</link>
                <guid isPermaLink="false">645432b0e704550645dffe6e</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Barbara Reis Bayer ]]>
                </dc:creator>
                <pubDate>Sun, 22 Oct 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/09/webscrapingposter.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/web-scraping-python-tutorial-how-to-scrape-data-from-a-website/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Web Scraping Python Tutorial – How to Scrape Data From A Website</a>
      </p><p>O Python é uma linguagem linda de se programar. Com um ecossistema de pacotes maravilhoso, nela, há bem menos ruído que em outras linguagens, além de ser muito fácil de usar. &nbsp;</p><p>O Python pode ser usado para várias coisas – desde a análise de dados até a programação em <em>back-end</em>. Dentre todas as opções, uma das maneiras mais empolgantes de se usar o Python é o <em>scraping </em>(em português, algo como "raspagem" ou extração) de dados na web.</p><p>Neste artigo, abordaremos como utilizar a linguagem Python para fazer <em>scraping</em> na web. Também trabalharemos com uma aula prática e interativa, guiando você à medida que avançamos neste artigo.</p><p><em>Observação: faremos scraping em um site da web hospedado por mim. Assim, poderemos aprender a fazê-lo em segurança. Muitas empresas não permitem o scraping de dados em seus sites. Então, essa será uma boa maneira de aprender. Certifique-se de checar isso antes de começar um scraping de dados na web.</em></p><h2 id="introdu-o-aula-de-scraping-de-dados-na-web"><strong>Introdução à aula de <em>scraping</em> de dados na web</strong></h2><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/09/screenzy-1601054558203.png" class="kg-image" alt="screenzy-1601054558203" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/09/screenzy-1601054558203.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/09/screenzy-1601054558203.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/09/screenzy-1601054558203.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/09/screenzy-1601054558203.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1272" loading="lazy"><figcaption>Pré-visualização de uma sala de aula no Codedamn.</figcaption></figure><p>Se você quiser programar em paralelo no decorrer deste artigo, pode usar <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup">esta aula no codedamn</a>, que consiste em diversos laboratórios que ajudam você a fazer o <em>scraping</em> de dados. Será um exercício prático e interativo no codedamn, muito similar à maneira que você aprende no freeCodeCamp.</p><p>Nesta aula, você utilizará essa página para testar o <em>scraping </em>de dados: </p><p><a href="https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/">https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/</a> &nbsp;(em inglês)</p><p>A aula é composta por sete laboratórios. Você resolverá o que há em cada um ao longo deste artigo. Usaremos o Python 3.8 e o BeautifulSoup 4 para o <em>scraping</em> de dados. </p><h2 id="parte-1-carregando-p-ginas-da-web-com-request-"><strong>Parte 1: carregando páginas da web com 'request' </strong></h2><p>Este é o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/a674e637-d958-4527-8930-cc53d1fb68e9">link deste laboratório</a>.</p><p>O módulo <code>requests</code> permite que você envie solicitações de HTTP usando o Python. </p><p>A solicitação de HTTP retorna um objeto <code>response</code> com todos os dados de resposta (conteúdo, código, status e assim por diante). Aqui vai um exemplo ao pegar HTML de uma página:</p><pre><code class="language-py">import requests

res = requests.get('https://codedamn.com')

print(res.text)
print(res.status_code)</code></pre><h3 id="requerimentos-necess-rios-"><strong>Requerimentos necessários: &nbsp;</strong></h3><ul><li>Pegar o conteúdo do URL a seguir usando o módulo <code>requests</code>: <strong><strong>https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/</strong></strong></li><li>Armazenar a resposta recebida (como demonstrado logo abaixo) em uma variável chamada <code>txt</code> &nbsp; &nbsp; </li><li>Armazenar o código do status (como demonstrado abaixo) em uma variável chamada <code>status</code> </li><li>Imprimir <code>txt</code> e <code>status</code> usando a função <code>print</code> &nbsp;</li></ul><p>Uma vez que você esteja entendendo o que está acontecendo no código abaixo, será bastante simples para você completar este laboratório. Aqui está a solução para ele: &nbsp;</p><pre><code class="language-py">import requests
# Faça uma solicitação para https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/
# Armazene o resultado na variável 'res'
res = requests.get(
    'https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/')
txt = res.text
status = res.status_code
# Imprima o resultado
print(txt, status)</code></pre><p>Vamos prosseguir para a parte 2 agora. Nela, você poderá programar mais, aproveitando o código que já fez até o momento.</p><h2 id="parte-2-extraindo-o-t-tulo-com-beautifulsoup"><strong>Parte 2: extraindo o título com BeautifulSoup &nbsp;</strong></h2><p>Este é o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/e55282e8-8481-4fb9-9a95-5df4d4a526ce">link para o laboratório</a>. </p><p>Em toda esta lição, você usará uma biblioteca chamada <code>BeautifulSoup</code> no Python para fazer o <em>scraping </em>de dados na web. Algumas funcionalidades que fazem o BeautifulSoup ser uma solução poderosa são: </p><ol><li>Fornecer muitos métodos simples e expressões "Pythônicas" para a navegação, pesquisa e modificação da árvore do DOM. Não é necessário programar muito para escrever uma aplicação. </li><li>O BeautifulSoup fica no topo dos analisadores (do inglês, <em>parsers</em>) mais populares de Python, como lxml e html5lib, permitindo que você teste diferentes estratégias de análise ou que faça uma troca entre velocidade e flexibilidade.</li></ol><p>Basicamente, o BeautifulSoup pode analisar qualquer coisa que tenha na página da web fornecida.</p><p>Aqui está um exemplo simples do BeautifulSoup: </p><pre><code class="language-py">from bs4 import BeautifulSoup

page = requests.get("https://codedamn.com")
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.title.text # Obtém o texto que está entre as tags &lt;title&gt;(...)&lt;/title&gt;</code></pre><h3 id="requerimentos-necess-rios--1"><strong>Requerimentos necessários:</strong></h3><ul><li>Utilizar o pacote <code>requests</code> para pegar o título do URL: https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/</li><li>Utilizar o BeautifulSoup para armazenar o título dessa página dentro de uma variável chamada <code>page_title</code> </li></ul><p>Vendo o exemplo abaixo, você pode notar que, uma vez inserido o <code>page.content</code> dentro do BeautifulSoup, você poderá começar a trabalhar com a análise da árvore do DOM de uma maneira bem típica do Python. A solução para o laboratório seria:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup

# Fazer uma solicitação para https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Extrair o título da página
page_title = soup.title.text

# Imprimir o resultado
print(page_title)</code></pre><p>Esse foi um laboratório simples, onde tivemos que mudar o URL e imprimir o título da página. O código acima passaria nesse laboratório.</p><h2 id="parte-3-extraindo-body-e-head"><strong>Parte 3: &nbsp;extraindo <em>body </em>e <em>head</em></strong></h2><p>Aqui está o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/a91108fd-2f13-4640-ac62-d7877235376a">link para este laboratório</a>. &nbsp;</p><p>No último laboratório, você viu como extrair o <code>title</code> da página. Da mesma maneira, seria fácil extrair seções mais específicas.</p><p>Você também viu que deve usar <code>.text</code> nelas para obter a <em>string</em>, mas você também pode imprimi-las sem utilizar o <code>.text</code>. Isso dará a você a marcação completa. Tente rodar o exemplo abaixo:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup

# Fazer uma solicitação
page = requests.get(
    "https://codedamn.com")
soup = BeautifulSoup(page.content, 'html.parser')

# Extrair o título da página
page_title = soup.title.text

# Extrair o body da página
page_body = soup.body

# Extrair a head da página
page_head = soup.head

# Imprimir o resultado
print(page_body, page_head)</code></pre><p>Vamos ver como você pode extrair as seções <code>body</code> e <code>head</code> de suas páginas.</p><h3 id="requerimentos-necess-rios--2"><strong>Requerimentos necessários:</strong></h3><ul><li>Repetir o experimento com o URL: <code>https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/</code></li><li>Armazenar o título da página (sem usar o .text) do URL em <code>page_title</code> </li><li>Armazenar o conteúdo do <code>body</code> (sem usar o .text) do URL em <code>page_body</code> </li><li>Armazenar o conteúdo da <code>head</code> (sem usar o .text) do URL em <code>page_head</code> </li></ul><p>Quando você tentar imprimir <code>page_body</code> ou <code>page_head</code>, verá que eles estarão impressos como <code>strings</code>. Na verdade, porém, quando você colocar <code>print(type page_body)</code>, verá que não é exatamente uma <em>string</em>. Mesmo assim, isso funcionará bem.</p><p>A solução desse exemplo seria simples, baseada no código abaixo:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup

# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Extrair o título da página
page_title = soup.title

# Extrair o body da página
page_body = soup.body

# Extrair a head da página
page_head = soup.head

# Imprimir o resultado
print(page_title, page_head)</code></pre><h2 id="parte-4-selecionando-com-o-beautifulsoup"><strong>Parte 4: selecionando com o BeautifulSoup</strong></h2><p>Aqui está o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/0ee9fa0e-e7ac-4afa-ad8a-b4b3d16900ef">link para este laboratório.</a></p><p>Agora que você já explorou algumas partes do BeautifulSoup, veremos como você pode selecionar elementos do DOM com métodos do BeautifulSoup.</p><p>Uma vez que você tenha a variável <code>soup</code> (como nos laboratórios anteriores), você pode trabalhar com <code>.select</code> nela, um seletor de CSS dentro do BeautifulSoup. Ou seja, você pode ter acesso à arvore do DOM do mesmo modo como você selecionaria elementos com CSS. Vejamos um exemplo:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup

# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Extrair o texto do primeiro &lt;h1&gt;(...)&lt;/h1&gt;
first_h1 = soup.select('h1')[0].text</code></pre><p>O <code>.select</code> retorna uma lista em Python de todos os elementos. Essa é a razão pela qual você selecionou apenas o primeiro elemento aqui com o índice <code>[0]</code>. &nbsp;</p><h3 id="requerimentos-necess-rios--3"><strong>Requerimentos necessários:</strong></h3><ul><li>Criar uma variável <code>all_h1_tags</code>. Colocá-la em uma lista vazia. </li><li>Usar <code>.select</code> para selecionar todas as tags <code>&lt;h1&gt;</code> e armazenar seus textos dentro da lista <code>all_h1_tags</code>. </li><li>Criar uma variável <code>seventh_p_text</code> e armazenar o texto do 7º elemento &nbsp;<code>p</code> &nbsp;(índice 6) dentro dela.</li></ul><p>A solução do laboratório é:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Criar all_h1_tags como uma lista vazia
all_h1_tags = []

# Definir all_h1_tags como todas as tags h1 de soup
for element in soup.select('h1'):
    all_h1_tags.append(element.text)

# Criar seventh_p_text e defini-lo como o texto do 7º elemento p da página
seventh_p_text = soup.select('p')[6].text

print(all_h1_tags, seventh_p_text)
</code></pre><p>Vamos continuar. </p><h2 id="parte-5-fazendo-o-scraping-dos-itens-que-est-o-no-topo">Parte 5: fazendo o scraping dos itens que estão no topo</h2><p>Aqui está o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/0f404796-1b8f-491b-9b50-9e47893d2e47">link deste laboratório</a>. </p><p>Agora, extrairemos os itens do topo retirados por <em>scraping</em> do URL https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/</p><p>Se você abrir essa página da web em uma nova guia, verá alguns itens no topo dela. Nesse laboratório, sua tarefa é pegar (ou fazer o <em>scraping </em>de) seus nomes e armazená-los em uma lista chamada <code>top_items</code>. Você também extrairá as suas avaliações.</p><p>Para concluir esse desafio, preste atenção nos seguintes pontos:</p><ul><li>Use o <code>.select</code> para obter os títulos. (Dica: um seletor para os títulos dos produtos poderia ser <code>a.title</code>)</li><li>Use <code>.select</code> para obter o rótulo de contagem de comentários para esses títulos de produtos.</li><li>Use <code>.select</code> para extrair o contador de avaliações dos títulos desses produtos. (Dica: um seletor para as avaliações poderia ser <code>div.ratings</code> ) Observação: esse é um rótulo completo (ou seja, 2 avaliações), não só um número.</li><li>Crie um dicionário nesse formato: </li></ul><pre><code class="language-py">info = {
   "title": 'Asus AsusPro Adv...   '.strip(),
   "review": '2 reviews\n\n\n'.strip()
}</code></pre><ul><li>Note que você está usando o método <code>strip</code> para remover quaisquer linhas extras ou espaços em branco que possam aparecer no resultado. Isso é algo <strong>importante</strong> para avançar nesse laboratório.</li><li>Use <code>.append</code> para adicionar esse dicionário em uma lista chamada <code>top_items</code>.</li><li>Imprima essa lista no final usando <code>print</code>.</li></ul><p>Há algumas tarefas a serem completadas nesse desafio. Vamos, primeiramente, dar uma olhada na solução para entendermos o que está acontecendo aqui: </p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Criar top_items como uma lista vazia
top_items = []

# Extrair e armazenar em top_items de acordo com as instruções
products = soup.select('div.thumbnail')
for elem in products:
    title = elem.select('h4 &gt; a.title')[0].text
    review_label = elem.select('div.ratings')[0].text
    info = {
        "title": title.strip(),
        "review": review_label.strip()
    }
    top_items.append(info)

print(top_items)</code></pre><p>Note que essa é apenas uma das soluções. Fique à vontade para tentar de outras maneiras. Nessa solução:</p><ol><li>Primeiro, você selecionará todos os elementos em <code>div.thumbnail</code>, obtendo uma lista de produtos individuais </li><li>Depois, você realiza uma iteração neles. </li><li>Você pode usar <code>select</code> outra vez para obter o título, já que ele permite iterar sobre ele mesmo.</li><li>Note que, agora que você já está rodando um laço para <code>div.thumbnail</code>, o seletor <code>h4 &gt; a.title</code> daria somente um resultado dentro de uma lista. O que você deve fazer é selecionar o elemento de número 0 dessa lista e, então, extrair o seu texto. </li><li>Agora, você já pode usar <code>strip</code> para remover quaisquer espaços extras contidos no texto e adicionar o texto à sua lista utilizando <code>append</code>.</li></ol><p>Simples, não é mesmo?</p><h2 id="parte-6-extraindo-links"><strong><strong>Parte 6: </strong>e<strong>xtraindo </strong>l<strong>inks </strong></strong></h2><p>Aqui está o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/be9b007a-ff03-45d5-ad44-1adecdb21e2a">link deste laboratório</a> &nbsp;</p><p>Até agora, você viu como é possível extrair o texto, ou <code>innerText</code>, dos elementos. Veremos em seguida como é possível extrair os atributos por meio da extração dos links da página. </p><p>Aqui está um exemplo de como extrair toda a informação de imagem da página:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Criar top_items como uma lista vazia
image_data = []

# Extrair e armazenar em top_items de acordo com as instruções
images = soup.select('img')
for image in images:
    src = image.get('src')
    alt = image.get('alt')
    image_data.append({"src": src, "alt": alt})

print(image_data)</code></pre><p>Nesse laboratório, sua tarefa é extrair o atributo <code>href</code> dos links e seus respectivos textos <code>text</code>. Certifique-se das seguintes coisas:</p><ul><li>Você terá que criar uma lista chamada <code>all_links</code></li><li>Nessa lista, armazene toda a informação do link. Isso deverá ficar no seguinte formato:</li></ul><pre><code class="language-py">info = {
   "href": "&lt;link here&gt;",
   "text": "&lt;link text here&gt;"
}</code></pre><ul><li>Certifique-se que o seu <code>text</code> esteja sem nenhum espaço em branco. </li><li>Certifique-se de checar se o seu <code>.text</code> é <code>None</code> antes de usar o <code>.strip()</code> nele. </li><li>Armazene todos esses dicionários em <code>all_links</code> </li><li>Use <code>print</code> para imprimir essa lista no final.</li></ul><p>Você extrairá os valores dos atributos da mesma maneira que você extrai os valores de um dicionário, usando a função <code>get</code>. Veremos agora a solução para esse laboratório:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Criar top_items como uma lista vazia
all_links = []

# Extrair e armazenar em top_items de acordo com as instruções
links = soup.select('a')
for ahref in links:
    text = ahref.text
    text = text.strip() if text is not None else ''

    href = ahref.get('href')
    href = href.strip() if href is not None else ''
    all_links.append({"href": href, "text": text})

print(all_links)</code></pre><p>Aqui, você extrairá o atributo <code>href</code> do mesmo modo que você fez no caso da imagem. A única coisa que você fará de diferente é conferir se ele é <code>None</code>, tal qual fizemos anteriormente. Queremos defini-lo como uma <em>string </em>vazia. Caso contrário, tiraremos o espaço em branco. </p><h2 id="parte-7-gerando-csv-a-partir-de-dados"><strong><strong>Parte 7: </strong>g<strong>erando CSV a partir de dados</strong></strong></h2><p>Aqui está o <a href="https://codedamn.com/practice/web-scraping-python-beautifulsoup/a10e33c1-7780-40bc-a541-adc632fab185">link deste laboratório</a></p><p>Por fim, vamos entender como gerar CSV a partir de um conjunto de dados. Você criará um CSV com os seguintes tópicos:</p><ol><li>Nome do produto</li><li>Preço</li><li>Descrição</li><li>Avaliações</li><li>Imagem do produto</li></ol><p>Esses produtos estão localizados em <code>div.thumbnail</code>. O padrão do CSV está logo abaixo:</p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
import csv
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

all_products = []

products = soup.select('div.thumbnail')
for product in products:
    # TODO: Trabalho
    print("Trabalho com o produto aqui")


keys = all_products[0].keys()

with open('products.csv', 'w', newline='') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(all_products)
</code></pre><p>Você deverá extrair os dados do site da web e gerar o CSV para três produtos.</p><h3 id="requerimentos-necess-rios--4"><strong><strong>Requerimentos necessários: </strong></strong></h3><ul><li>O nome do produto é a versão com o espaço em branco cortado do nome do item (exemplo - Asus AsusPro Adv.) </li><li>Preço é o espaço em branco cortado mas com o rótulo do preço inteiro (exemplo - $1101.83) </li><li>A descrição é a versão com o espaço em branco cortado da descrição do produto (exemplo - Asus AsusPro Advanced BU401LA-FA271G Dark Grey, 14", Core i5-4210U, 4GB, 128GB SSD, Win7 Pro)</li><li>Avaliações são as versões com o espaço em branco cortado do produto (exemplo - 7 avaliações) </li><li>Imagem do produto é o URL (atributo src) da imagem do produto (exemplo - /webscraper-python-codedamn-classroom-website/cart2.png)</li><li>O nome do arquivo CSV deve ser <strong><strong>products.csv</strong></strong> e deve ser armazenado na mesma pasta que o seu arquivo <strong><strong>script.py.</strong></strong></li></ul><p>Aqui está a solução para esse laboratório: </p><pre><code class="language-py">import requests
from bs4 import BeautifulSoup
import csv
# Fazer uma solicitação
page = requests.get(
    "https://codedamn-classrooms.github.io/webscraper-python-codedamn-classroom-website/")
soup = BeautifulSoup(page.content, 'html.parser')

# Criar top_items como uma lista vazia
all_products = []

# Extrair e armazenar em top_items de acordo com as instruções
products = soup.select('div.thumbnail')
for product in products:
    name = product.select('h4 &gt; a')[0].text.strip()
    description = product.select('p.description')[0].text.strip()
    price = product.select('h4.price')[0].text.strip()
    reviews = product.select('div.ratings')[0].text.strip()
    image = product.select('img')[0].get('src')

    all_products.append({
        "name": name,
        "description": description,
        "price": price,
        "reviews": reviews,
        "image": image
    })


keys = all_products[0].keys()

with open('products.csv', 'w', newline='') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(all_products)
</code></pre><p>O bloco <code>for</code> é o mais interessante aqui. Você extrai todos os elementos e atributos de tudo o que já foi aprendido até agora em todos os laboratórios.</p><p>Quando você rodar esse código, terá um bom arquivo CSV. Isso é praticamente todo o básico de <em>scraping </em>de dados com o BeautifulSoup!</p><h2 id="conclus-o"><strong><strong>Conclusão </strong></strong></h2><p>Eu espero que essa aula interativa do <a href="https://codedamn.com/">codedamn</a> tenha ajudado você a entender o básico de <em>scraping </em>de dados com o Python. </p><p>Se você gostou desta aula e deste artigo, o autor pede que compartilhe com ele sya opinião no <a href="https://twitter.com/mehulmpt">Twitter</a> e no <a href="https://instagram.com/mehulmpt">Instagram</a> do autor. Ele adoraria ter o seu feedback!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ As melhores comunidades para desenvolvedores ]]>
                </title>
                <description>
                    <![CDATA[ Se você quiser crescer como desenvolvedor, eu não poderia enfatizar o suficiente os benefícios que você teria ao se juntar a uma comunidade de desenvolvedores. Existem muitas vantagens, da programação em conjunto com outros desenvolvedores ao compartilhamento de conhecimento, mentorias, apoio, ferramentas, revisão de código, a possibilidade de ter suas ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/as-melhores-comunidades-para-desenvolvedores/</link>
                <guid isPermaLink="false">6402303ec24870050d79fdab</guid>
                
                    <category>
                        <![CDATA[ Comunidade ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Barbara Reis Bayer ]]>
                </dc:creator>
                <pubDate>Mon, 19 Jun 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/banner-dev-community-high-res-v5.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/best-developer-communities-to-be-part-of-in-2020/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Best Developer Communities to Join in 2020</a>
      </p><p>Se você quiser crescer como desenvolvedor, eu não poderia enfatizar o suficiente os benefícios que você teria ao se juntar a uma comunidade de desenvolvedores. Existem muitas vantagens, da programação em conjunto com outros desenvolvedores ao compartilhamento de conhecimento, mentorias, apoio, ferramentas, revisão de código, a possibilidade de ter suas perguntas respondidas, entre outros. </p><p>Comunidades normalmente são construídas em torno de dificuldades em comum de indivíduos que estão aprendendo em uma determinada região. Os objetivos das comunidade diferem nas necessidades coletivas de cada uma. </p><p>Ao longo dos anos, essas comunidades cresceram no mundo todo com objetivos e missões diferentes, mas ainda visando proporcionar uma plataforma para que os desenvolvedores possam aprender, interagir, compartilhar ideias, apoiar uns aos outros e crescer. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><p> "Se você quiser ir rápido, vá sozinho. Se você quiser ir longe, vá acompanhado." — Provérbio Africano. &nbsp; &nbsp;</p><p>Para melhor ajudar aqueles que estão procurando uma comunidade da qual participar, eu fiz uma lista das 20 melhores comunidades (sem ordem de importância), variando da Engenharia ao Design, Ciência de Dados, Aprendizado de Máquina, Relações ente Desenvolvedores, Escrita Técnica e mais.</p><h2 id="1-women-who-code"><strong><strong>1.</strong> <a href="https://www.womenwhocode.com/">Women Who Code</a></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/Bl9cmrbm3.png" class="kg-image" alt="Bl9cmrbm3" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/Bl9cmrbm3.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/Bl9cmrbm3.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/Bl9cmrbm3.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/Bl9cmrbm3.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A Women Who Code (em português, mulheres que programam) é uma organização internacional sem fins lucrativos para mulheres na tecnologia com eventos, recursos de programação, empregos, mentorias e mais. Elas visam inspirar, apoiar, dar assistência, bem como ajudar mulheres a desenvolverem habilidades técnicas e se sobressaírem em suas carreiras.</p><p>Participe agora para ter acesso exclusivo a essa comunidade, aos eventos, bolsas de estudo, ingressos gratuitos para eventos, oportunidades de trabalho e muito mais.</p><h2 id="2-hashnode"><strong><strong>2. <a href="http://hashnode.com/">Hashnode</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/Wc8I44ICK.png" class="kg-image" alt="Wc8I44ICK" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/Wc8I44ICK.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/Wc8I44ICK.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/Wc8I44ICK.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/Wc8I44ICK.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A Hashnode é uma comunidade on-line onde desenvolvedores compartilham conhecimento e evoluem em suas carreiras. Desenvolvedores ao redor do mundo participam de discussões acaloradas no Hashnode. Você pode escrever histórias e fazer perguntas abertas ou mais específicas, perguntar anonimamente e fazer enquetes. Também é possível fazer <a href="https://hashnode.com/amas">perguntas a equipes técnicas famosas e a influenciadores da área do desenvolvimento</a> ou até mesmo aprender com as <a href="https://hashnode.com/series/she-inspires-cjt0d02lq001e7ps2wo420g15">histórias de mulheres maravilhosas na tecnologia</a>.</p><p><a href="https://hashnode.com/devblog">A plataforma DevBlog do Hashnode</a> permite criar seu blog pessoal em um domínio personalizado em poucos passos simples, com tudo o que é necessário para crescer como um blogueiro (sem pagamentos envolvidos, com domínio gratuito, SSL, back-up automático das postagens, <em>markdown</em>, suporte de AMP, entre outros). <a href="https://hashnode.com/post/hey-developers-own-your-canonical-ck1ggpmgs000cd9s1323ltbo7">Adquira seu próprio espaço</a>, faça conteúdos independentes e construa sua autoridade de domínio.</p><h2 id="3-freecodecamp"><strong><strong>3. </strong><a href="https://www.freecodecamp.org/">f</a><strong><a href="https://www.freecodecamp.org/">ree</a></strong><a href="https://www.freecodecamp.org/">C</a><strong><a href="https://www.freecodecamp.org/">ode</a></strong><a href="https://www.freecodecamp.org/">C</a><strong><a href="https://www.freecodecamp.org/">amp</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/y7Zt2QlNH.png" class="kg-image" alt="y7Zt2QlNH" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/y7Zt2QlNH.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/y7Zt2QlNH.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/y7Zt2QlNH.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/y7Zt2QlNH.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O <a href="https://freecodecamp.org/portuguese">freeCodeCamp</a> é uma organização sem fins lucrativos que ajuda pessoas a aprender a programar de graça através de <a href="https://youtube.com/freecodecamp">milhares de vídeos</a> (em inglês), <a href="https://www.freecodecamp.org/portuguese/news">artigos</a>, <a href="https://www.freecodecamp.org/portuguese/learn/">aulas de programação interativas</a> e milhares de grupos de estudo ao redor do mundo.</p><p>Você aprende completando desafios de programação e construindo projetos certificados ao mesmo tempo.</p><h2 id="4-stackoverflow"><strong><strong>4. <a href="https://stackoverflow.com/">StackOverflow</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/loF0gg6C_.png" class="kg-image" alt="loF0gg6C_" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/loF0gg6C_.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/loF0gg6C_.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/loF0gg6C_.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/loF0gg6C_.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Stack Overflow é uma página da web focada em perguntas e respostas para programadores com inúmeras perguntas e respostas sobre diversos tópicos na área da programação de computadores.</p><p>Você pode aprender através de perguntas que já foram feitas e respondidas, compartilhar seus conhecimentos em programação respondendo algumas dúvidas postadas ou compartilhar suas dúvidas e problemas aqui.</p><h2 id="5-hackernews"><strong><strong>5. <a href="https://news.ycombinator.com/">HackerNews</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/Q0YqW1SYH.png" class="kg-image" alt="Q0YqW1SYH" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/Q0YqW1SYH.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/Q0YqW1SYH.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/Q0YqW1SYH.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/Q0YqW1SYH.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Hacker News é um site que foca em ciências da computação e empreendedorismo onde é possível enviar links para conteúdos mais técnicos.</p><p>Esse é um ótimo jeito de promover seus conteúdos a uma variedade de visualizadores e encontrar mais conteúdos incríveis de outros <em>geeks</em>.</p><h2 id="6-hackernoon"><strong><strong>6. <a href="https://hackernoon.com/">Hackernoon</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/VJpYpPvXb.png" class="kg-image" alt="VJpYpPvXb" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/VJpYpPvXb.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/VJpYpPvXb.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/VJpYpPvXb.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/VJpYpPvXb.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Hackernoon é um site de mídia que entrega histórias e opiniões escritas por profissionais da tecnologia e lido por Tecnólogos, Desenvolvedores de Software, Bitcoiners e entusiastas das Blockchain.</p><p>Você pode escrever artigos técnicos aqui e aprender a partir de uma vasta série de conteúdos técnicos disponíveis e irrestritos.</p><h2 id="7-sitepoint-community"><strong><strong>7. <a href="https://www.sitepoint.com/community/">SitePoint Community</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/icmkWaWra.png" class="kg-image" alt="icmkWaWra" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/icmkWaWra.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/icmkWaWra.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/icmkWaWra.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/icmkWaWra.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O SitePoint Community é uma comunidade para designers da web e desenvolvedores criada para discutir tudo que envolva desenvolvimento da web, HTML, CSS, JavaScript, PHP, Photoshop, SEO, entre outros.</p><p>Assim como no StackOverflow, é possível perguntar e responder a outras perguntas sobre desenvolvimento da web aqui.</p><h2 id="8-kaggle"><strong><strong>8. <a href="https://www.kaggle.com/">Kaggle</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/a2TMmsGxG.png" class="kg-image" alt="a2TMmsGxG" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/a2TMmsGxG.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/a2TMmsGxG.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/a2TMmsGxG.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/a2TMmsGxG.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Kaggle é uma comunidade on-line de praticantes de ciência de dados e aprendizado de máquina, com uma publicação ampla de repositório de dados e código com mais de 19 mil bases de dados públicas e 200 mil <em>notebooks</em> abertos. O Kaggle também oferece cursos em Aprendizado de Máquina, Pandas, Python, Deep Learning, Visualização de Dados e SQL, além de discussões para ajudar você a se desenvolver</p><h2 id="9-indie-hackers"><strong><strong>9. <a href="https://www.indiehackers.com/">Indie Hackers</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/nts0ka4KJ.png" class="kg-image" alt="nts0ka4KJ" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/nts0ka4KJ.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/nts0ka4KJ.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/nts0ka4KJ.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/nts0ka4KJ.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>Um Hacker Indie é "uma pessoa construindo um projeto on-line que pode gerar renda." A Indie Hackers é uma comunidade global de desenvolvedores que compartilham seus projetos, estratégias e estatísticas de renda que existem por trás das suas empresas e projetos.</p><p>Você pode aprender com os fundadores que estão por trás de centenas de negócios de sucesso on-line e se conectar com outros que estão começando e evoluindo suas próprias empresas através de encontros globais, discussões, artigos e muito mais.</p><h2 id="10-code-newbie"><strong><strong>10. <a href="https://www.codenewbie.org/">Code Newbie</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/r0_JMdQwj.png" class="kg-image" alt="r0_JMdQwj" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/r0_JMdQwj.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/r0_JMdQwj.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/r0_JMdQwj.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/r0_JMdQwj.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A Code Newbie é a comunidade mais acolhedora, constituída por programadores e pessoas que estão aprendendo programação. Ela começou como um <em>chat </em>semanal no <em>Twitter</em>, criado para dar assistência a pessoas nesse processo de aprendizado. Desde então, ela cresceu e se tornou uma comunidade internacional de apoio para os que ainda estão aprendendo a programar.</p><h2 id="11-digital-ocean-community"><strong><strong>11. <a href="https://www.digitalocean.com/community">Digital Ocean Community</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/XEc8qjO3o.png" class="kg-image" alt="XEc8qjO3o" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/XEc8qjO3o.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/XEc8qjO3o.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/XEc8qjO3o.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/XEc8qjO3o.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>Esse é um lugar inclusivo, onde desenvolvedores podem encontrar ou dar suporte e contribuir para a comunidade de DevOps e entusiastas de computação na nuvem. A comunidade oferece guias, tutoriais, tendências para desenvolvedores, sessões de perguntas e respostas, entre outros.</p><h2 id="12-product-hunt"><strong><strong>12. <a href="https://www.producthunt.com/">Product Hunt</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/KokPlSTVo.png" class="kg-image" alt="KokPlSTVo" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/KokPlSTVo.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/KokPlSTVo.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/KokPlSTVo.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/KokPlSTVo.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A Product Hunt é uma comunidade com produtos maravilhosos apresentados todos os dias. É um lugar onde amantes da tecnologia podem descobrir e compartilhar novidades sobre as mais novas aplicações para dispositivos móveis, sites da web, projetos de hardware, entre outras criações do mundo tecnológico.</p><h2 id="13-reddit"><strong><strong>13. <a href="https://reddit.com/">Reddit</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/fw0VeFcpX.png" class="kg-image" alt="fw0VeFcpX" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/fw0VeFcpX.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/fw0VeFcpX.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/fw0VeFcpX.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/fw0VeFcpX.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Reddit é uma comunidade global com milhares de subcomunidades, inúmeros debates e que contém uma rede<em> </em>de diversos <em>streams</em> para desenvolvedores, como <a href="https://www.reddit.com/r/reactjs">r/reactjs</a>, <a href="https://www.reddit.com/r/vuejs/">r/vuejs</a>, <a href="https://www.reddit.com/r/JAMstack_dev/">r/JAMstack_dev</a>, <a href="https://www.reddit.com/r/Python/">r/Python</a>, entre outros. </p><h2 id="14-devcareer"><strong><strong>14. <a href="https://devcareer.io/">DevCareer</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/xZ3rsqt_7.png" class="kg-image" alt="xZ3rsqt_7" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/xZ3rsqt_7.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/xZ3rsqt_7.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/xZ3rsqt_7.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/xZ3rsqt_7.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A DevCareer é uma organização sem fins lucrativos que foca em dar apoio a futuros desenvolvedores com mentorias e recursos que os permitam se tornar desenvolvedores de alto nível. Para os que passam pelo programa, são fornecidos <em>notebooks</em>, espaços para <em>co-working</em>, instrumentos de trabalho, mentorias e colocações em empresas para desenvolvedores de software na África. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p><h2 id="15-interaction-design-foundation"><strong><strong>15. <a href="https://www.interaction-design.org/community">Interaction Design Foundation</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/SE2sSQD65.png" class="kg-image" alt="SE2sSQD65" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/SE2sSQD65.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/SE2sSQD65.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/SE2sSQD65.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/SE2sSQD65.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O site "The Interaction Design Foundation Community" oferece uma oportunidade bem interessante para designers criarem e aperfeiçoarem seu portfólio enquanto se preparam para trabalhar em Experiência de Usuário. Eles oferecem desde cursos de especialistas em UX, a eventos locais de UX Design em cidades por todo o mundo, debates sobre UX, colaborações, e muito mais.</p><h2 id="16-daily-ui"><strong><strong>16. <a href="https://www.dailyui.co/">Daily UI</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/PHOWpfSjm.png" class="kg-image" alt="PHOWpfSjm" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/PHOWpfSjm.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/PHOWpfSjm.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/PHOWpfSjm.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/PHOWpfSjm.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Daily UI é uma série livre de desafios de Interface de Usuário diários, inspirações de design e recompensas surpresa para fazer com que você se torne um designer melhor em 100 dias. Seu incrível lembrete diário dará a você mais motivação para continuar aprendendo.</p><h2 id="17-dev-to"><strong><strong>17. <a href="https://dev.to/">Dev.to</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/8iPX4fMzG.png" class="kg-image" alt="8iPX4fMzG" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/8iPX4fMzG.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/8iPX4fMzG.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/8iPX4fMzG.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/8iPX4fMzG.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>A DEV é uma comunidade de desenvolvedores de software que se ajudam. O site disponibiliza um espaço para que desenvolvedores colaborem uns com os outros e formem uma rede enquanto aprendem e também compartilham seus conhecimentos. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </p><h2 id="18-devrel-collective"><strong><strong>18. <a href="https://devrelcollective.fun/">DevRel Collective</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/BB1LuPI5q.png" class="kg-image" alt="BB1LuPI5q" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/BB1LuPI5q.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/BB1LuPI5q.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/BB1LuPI5q.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/BB1LuPI5q.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O DevRel Collective é uma comunidade de relações entre desenvolvedores que existe para facilitar o compartilhamento de informação, recursos e, também, promover o incentivo dentro da comunidade DevRel.</p><p>Se você for ativamente envolvido em comunidades de desenvolvedores ou gestão de eventos, você deve se juntar a essa comunidade.</p><h2 id="19-facebook-developer-circles"><strong><strong>19. <a href="https://developers.facebook.com/developercircles/">Facebook Developer Circles</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/y_xlf62k8.png" class="kg-image" alt="y_xlf62k8" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/y_xlf62k8.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/y_xlf62k8.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/y_xlf62k8.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/y_xlf62k8.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O Developer Circles do Facebook é um programa projetado para criar comunidades locais e organizadas para desenvolvedores. Essas comunidades educam e proporcionam um fórum para discussões e compartilhamento de informação em torno dos temas mais relevantes para desenvolvedores em determinados mercados.</p><p><a href="https://developers.facebook.com/developercircles/find">Encontre um DV local mais próximo a você aqui</a>.</p><h2 id="20-google-developer-groups"><strong><strong>20. <a href="https://developers.google.com/community/gdg">Google Developer Groups</a></strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/gnodVTzig.png" class="kg-image" alt="gnodVTzig" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/gnodVTzig.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/06/gnodVTzig.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/06/gnodVTzig.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w2400/2023/06/gnodVTzig.png 2400w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>O GDG reúne desenvolvedores de software com interesses em comum para se encontrarem em reuniões e workshops interativos. A comunidade acolhe a todos que se interessem por tecnologia, desde o nível mais iniciante até profissionais experientes.</p><p><a href="https://developers.google.com/community/gdg/groups">Encontre o GDG mais próximo a você aqui</a>.</p><h2 id="conclus-o"><strong><strong>Conclus</strong>ão</strong></h2><p>"Não há poder para mudança maior do que uma comunidade descobrindo o que lhe é importante." &nbsp;– Margaret J. Wheatley.</p><p>Os laços que se criam em comunidades de desenvolvedores evoluíram de somente "grupos técnicos" para "grupos familiares", onde todos são apaixonados por compartilhar conhecimento e ajudar os participantes a atingirem níveis mais altos em suas carreiras.</p><p>Maravilhoso, não é? Um viva à nova era, onde compartilhar conhecimentos e ter espírito de união estão se tornando algo comum!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Descobri um jeito de invadir qualquer conta do Facebook e me pagaram uma recompensa por isso ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: AppSecure Eu estou publicando isso com a permissão do Facebook sob a política de divulgação responsável. Eles já consertaram essa vulnerabilidade.  Este artigo é sobre uma vulnerabilidade simples que eu descobri no Facebook que eu poderia ter usado facilmente para invadir a conta de outros usuários do ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/descobri-um-jeito-de-invadir-qualquer-conta-do-facebook-e-me-pagaram-uma-recompensa-por-isso/</link>
                <guid isPermaLink="false">640215dcc24870050d79fb31</guid>
                
                    <category>
                        <![CDATA[ Segurança da informação ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Barbara Reis Bayer ]]>
                </dc:creator>
                <pubDate>Wed, 19 Apr 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/1_YxD3C1C9qLsIGG4pqLv7ig.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/responsible-disclosure-how-i-could-have-hacked-all-facebook-accounts-f47c0252ae4d/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">I figured out a way to hack any of Facebook’s 2 billion accounts, and they paid me a $15,000 bounty…</a>
      </p><p>Escrito por: AppSecure</p><p>Eu estou publicando isso com a permissão do Facebook sob a política de divulgação responsável. Eles já consertaram essa vulnerabilidade. </p><p>Este artigo é sobre uma vulnerabilidade simples que eu descobri no Facebook que eu poderia ter usado facilmente para invadir a conta de outros usuários do Facebook e sem nenhuma interação com eles.</p><p>Isso me deu acesso total a contas de outros usuários através da configuração de uma nova senha. Eu pude ver mensagens, cartões de débito/crédito armazenados dentro da sessão de pagamentos, fotos pessoais e outras informações privadas. </p><p>O Facebook tomou conhecimento do problema imediatamente, o consertou e me gratificou com uma recompensa de 15 mil dólares com base na gravidade e no impacto dessa vulnerabilidade. </p><h3 id="como-a-invas-o-funcionou"><strong>Como a invasão funcionou</strong></h3><p>Sempre que um usuário se esquece da senha do Facebook, ele tem a opção de redefinir a senha mediante a inserção do seu número de telefone e endereço de <em>e-mail </em>em <a href="https://www.facebook.com/login/identify?ctx=recover&amp;lwv=110&amp;__mref=message" rel="noopener">https://www.facebook.com/login/identify?ctx=recover&amp;lwv=110</a>.</p><p>O Facebook, então, enviará um código de seis dígitos para esse número de telefone ou para o endereço de <em>e-mail</em> que o usuário tem que inserir para poder definir a nova senha.</p><p>Eu tentei forçar o código de 6 dígitos no <a href="https://www.facebook.com/">www.facebook.com</a> e houve um bloqueio depois de 10-12 tentativas inválidas. </p><p>Então, eu procurei pelo mesmo problema no <a href="https://www.beta.facebook.com">beta.facebook.com</a> e <a href="https://www.mbasic.beta.facebook.com">mbasic.beta.facebook.com</a>. Curiosamente, a limitação de taxa não estava presente no <em>endpoint</em> de senha esquecida.</p><p>Eu tentei invadir a minha própria conta (já que de acordo com a política do Facebook você não pode prejudicar nenhuma outra conta de usuário) e tive êxito em configurar uma nova senha para a minha conta. Pude, então, usar essa mesma senha para conseguir entrar na minha própria conta invadida.</p><h3 id="uma-prova-da-invas-o-em-v-deo"><strong>Uma prova da invasão em vídeo</strong></h3><p>Como pode ser visto no vídeo, eu fui capaz de definir uma nova senha para o usuário usando <em><a href="https://pt.wikipedia.org/wiki/Ataque_de_for%C3%A7a_bruta">força bruta</a></em> no código que foi enviado para o seu endereço de e-mail e número de telefone.</p><h3 id="solicita-o-vulner-vel"><strong>Solicitação vulnerável </strong></h3><p><code>POST /recover/as/code/ HTTP/1.1</code></p><p><code>Host: beta.facebook.com</code></p><p><code>lsd=AVoywo13&amp;n=XXXXX</code></p><p>Usar <a href="https://pt.wikipedia.org/wiki/Ataque_de_for%C3%A7a_bruta">força bruta</a> com o "n" me permitiu definir uma nova senha com sucesso para qualquer usuário do Facebook.</p><h3 id="linha-de-tempo"><strong>Linha de tempo</strong></h3><p>22 de fevereiro de 2016 : relato enviado para a equipe do Facebook.</p><p>23 de fevereiro de 2016 : o Facebook verificou a solução. </p><p>2 de março de 2016 : recebi a recompensa de 15 mil dólares concedida pelo Facebook.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como se tornar um desenvolvedor e conseguir o seu primeiro emprego o quanto antes. ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Sam Williams Você já pensou em se tornar um desenvolvedor de software ou está pensando em trocar de carreira? Este artigo dará a você um plano sólido para aprender desenvolvimento de software e conseguir seu primeiro emprego! Por que ser um desenvolvedor? Se você está considerando se tornar ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-se-tornar-um-desenvolvedor-e-conseguir-o-seu-primeiro-emprego-o-quanto-antes-a-developer-and-get-your-first-job-as-quickly-as-possible/</link>
                <guid isPermaLink="false">63f3db9a58018c06027bfa6b</guid>
                
                    <category>
                        <![CDATA[ Desenvolvimento para a Web ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Barbara Reis Bayer ]]>
                </dc:creator>
                <pubDate>Mon, 17 Apr 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/1_LMEECiXhk715h-VCFyb-GA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/become-a-developer-and-get-your-first-job-fast-7b8ac26d84c6/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to become a developer and get your first job as quickly as possible</a>
      </p><p>Escrito por: Sam Williams</p><p>Você já pensou em se tornar um desenvolvedor de <em>software</em> ou está pensando em trocar de carreira? Este artigo dará a você um plano sólido para aprender desenvolvimento de <em>software</em> e conseguir seu primeiro emprego!</p><h3 id="por-que-ser-um-desenvolvedor"><strong>Por que ser um desenvolvedor<strong>?</strong></strong></h3><p>Se você está considerando se tornar um desenvolvedor, mas não tem certeza se é uma boa ideia, aqui estão algumas coisas a se pensar: </p><ol><li>Há uma demanda muito grande por desenvolvedores — no momento em que este artigo foi escrito, o <em>site</em> Indeed tinha 37.739 anúncios de emprego para 'desenvolvedor' no Reino Unido e 145.640 nos Estados Unidos. Esses números só aumentarão, já que o Departamento de Estatísticas de Trabalho dos Estados Unidos estima um aumento de 17% entre 2014 e 2024. </li><li>O trabalho pode ser muito variado e interessante — como desenvolvedor, você pode trabalhar em uma variedade de projetos, de<em> sites</em> da <em>web</em> de <em>e-commerce</em> a jogos de computador, de aplicações para dispositivos móveis à inteligência artificial. Quase todas as habilidades são transferíveis entre cada uma dessas áreas. Isso quer dizer que você não estará preso a um só emprego. </li><li>O trabalho pode ser bastante flexível — como a maior parte do seu trabalho é ler e escrever código, tudo o que você precisa é de um computador. Isso quer dizer que pode ser feito em qualquer lugar, a qualquer hora. Há um número crescente de desenvolvedores que trabalham remotamente em casa ou enquanto viajam ao redor do mundo. </li></ol><h3 id="como-se-tornar-um-desenvolvedor"><strong>Como se tornar um desenvolvedor</strong></h3><p>Ser um desenvolvedor requer muitas habilidades e há dois fatores importantes para se desenvolver uma habilidade: a prática eficaz e o apoio de desenvolvedores sênior. Você precisa maximizar ambos para que venha a se tornar o melhor desenvolvedor possível. Há três boas maneiras de se ter certeza de que você está em um caminho rápido para começar a sua carreira de desenvolvedor: </p><h4 id="bootcamps-cursos-intensivos-de-programa-o-"><strong><strong><em>Bootcamps</em></strong> (cursos intensivos de programação)</strong></h4><p>Estes cursos são excelentes, pois são projetados para pegar alguém com pouca ou nenhuma experiência e torná-lo preparado para conseguir um emprego em três meses. Isso quer dizer muita prática efetiva e uma ajuda imensa dos desenvolvedores que coordenam o <em>bootcamp</em>. </p><p>Os problemas que você pode ter com <em>bootcamps</em> é que eles geralmente têm uma duração de três meses de ensino em tempo integral e podem custar de 4 a 20 mil dólares. Isso é muito dinheiro para desembolsar, especialmente se você não estiver recebendo durante esses três meses. </p><h4 id="achando-um-mentor"><strong>Achando um mentor</strong></h4><p>Esta é a situação perfeita: você começa a programar e tem um desenvolvedor como seu mentor e tutor. Pode ser algum amigo, um membro da família ou apenas um desenvolvedor que queira ajudar você. Você não terá tanta ajuda como em um <em>bootcamp</em>, mas ter alguém com quem se possa contar quando se encontra um obstáculo é muito útil. Além do mais, ter alguém que acompanhe você e que se certifique que você está dedicando o tempo necessário aos estudos pode ajudar você a se manter no caminho certo. </p><p>Isso tudo soa formidável, mas encontrar um mentor pode ser difícil. Nem todo mundo conhece alguém que trabalha como desenvolvedor e isso requer muito trabalho extra para o mentor. Se você conhece algum desenvolvedor, ele pode se recusar a ser seu mentor e você precisará respeitar isso. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/GhrrQUXaT2aRowkxKEs6T4RJQjsm4pu8yyiU.jpg" class="kg-image" alt="GhrrQUXaT2aRowkxKEs6T4RJQjsm4pu8yyiU" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/GhrrQUXaT2aRowkxKEs6T4RJQjsm4pu8yyiU.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/GhrrQUXaT2aRowkxKEs6T4RJQjsm4pu8yyiU.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="533" loading="lazy"><figcaption>Ter um mentor pode ser ótimo.</figcaption></figure><h4 id="conseguindo-um-trabalho-como-desenvolvedor"><strong>Conseguindo um trabalho como desenvolvedor</strong></h4><p>Isso pode parecer meio estranho, já que você precisa estar apto a programar antes de conseguir um emprego, mas explicarei mais tarde como chegar a esse ponto sem um mentor ou <em>bootcamp. </em>Quando você conseguir seu primeiro emprego, você poderá ter uma imensa vantagem — estará sendo pago para praticar programação enquanto trabalha com desenvolvedores sênior<em>. </em>O que mais você pode querer? &nbsp;</p><p>Trabalhar como um desenvolvedor também deixará você exposto a um lado do desenvolvimento que você não conhecerá nos estudos: o lado comercial. Essa é uma parte imensa do desenvolvimento, já que não há nenhuma razão em fazer um produto que ninguém quer e lidar com clientes é uma habilidade que leva tempo para se aprender.</p><h3 id="come-ando-o-planejamento"><strong>Começando o planejamento</strong></h3><p>Como nem todo mundo pode custear um <em>bootcamp</em> ou conhece alguém para ser seu mentor, darei aqui um plano para conseguir seu primeiro emprego como desenvolvedor. Foi praticamente assim <a href="https://www.freecodecamp.org/news/getting-your-first-developer-job-with-little-experience-ff7b18299d6c">que eu fui de engenheiro a desenvolvedor em somente 4 meses</a> (texto em inglês).</p><h4 id="encontrando-um-emprego"><strong>Encontrando um emprego </strong></h4><p>Para criar um bom plano você precisa ter um objetivo em mente. Nossa meta é conseguir um emprego o mais rápido possível, o quanto antes você conseguir seu primeiro emprego, mais rápido terá o estímulo de praticar a programação todos os dias tendo o apoio de desenvolvedores sênior e com o bônus de receber por isso. </p><p>Há muitas maneiras de se entrar no mundo do desenvolvimento, desde ciência de dados e inteligência artificial a desenvolvimento de jogos, mas o setor mais fácil para se entrar é o de desenvolvedor para a <em>web. </em>Se você estiver com outros planos no momento, lembre-se de que começar no desenvolvimento para a <em>web</em> não quer necessariamente dizer que você estará preso a isso para sempre. Você aprenderá muito e com isso poderá transferir esse conhecimento adquirido para o campo desejado. </p><p>Quando eu procurei por <strong>desenvolvedor para a web júnior</strong>, a primeira vaga de emprego que eu vi foi para <strong>desenvolvedor para a web júnior em <em>front-end</em></strong>. Os requisitos eram os seguintes:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/rLbZUCrDgAFdd5Il24L8frle9KTmNtdARZu2.png" class="kg-image" alt="rLbZUCrDgAFdd5Il24L8frle9KTmNtdARZu2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/rLbZUCrDgAFdd5Il24L8frle9KTmNtdARZu2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/rLbZUCrDgAFdd5Il24L8frle9KTmNtdARZu2.png 800w" sizes="(min-width: 720px) 720px" width="800" height="547" loading="lazy"></figure><p>Podemos dar uma olhada em alguns anúncios de empregos similares e achar as exigências que aparecem mais frequentemente. Estas são os mais prováveis: </p><ul><li>Conhecimento em <em>front-end</em>: HTML, CSS e JavaScript </li><li>Habilidade de criar <em>sites</em> responsivos para a <em>web</em></li><li>Um portfólio demonstrando sua experiência e habilidades</li><li>Conhecimento em controle de versão </li></ul><p>Outras habilidades bônus podem incluir: </p><ul><li>Bibliotecas do JavaScript: jQuery, AJAX, Bootstrap </li><li>Conhecimento em depuração (do inglês, <em>debugging</em>) </li></ul><h3 id="criando-o-plano"><strong>Criando o plano </strong></h3><p>Agora que sabemos o que precisamos aprender para cumprir os requisitos, podemos criar um planejamento de como aprender o que precisamos para alcançar nossas metas. Tente seguir esse planejamento passo a passo, já que será muito mais fácil aprender o conteúdo mais avançado se você já souber os que vêm antes. </p><h4 id="html-e-css"><strong><strong>HTML </strong>e<strong> CSS</strong></strong></h4><p>Esses são os blocos construtores da maioria dos <em>sites</em> da <em>web</em> hoje em dia. Você precisa desenvolver um bom entendimento deles se quiser ter uma chance de conseguir um emprego. Por sorte, há centenas de recursos pagos e gratuitos por aí que podem ajudar você a dominar essas competências.</p><p>O <a href="https://www.freecodecamp.org/portuguese/learn/">freeCodeCamp</a> é um <em>site</em> que ensina a você tudo o que envolve o desenvolvimento para a <em>web</em> e é incrível. Ele dá o passo a passo através de pequenas aulas. Foi onde eu aprendi HTML, CSS, e JavaScript!</p><p>Começaremos com a certificação de Design Responsivo para Web e com o <strong>Básico de HTML e HTML5</strong> e com o <strong>CSS Básico</strong>. Essas seções introduzirão você ao HTML e ao CSS. Até o final delas, você estará criando formas e estilizando HTML com variáveis em cascatas.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/9NnVZviy8j8wW69H6Dh5vYQcLwchkTGSvJSF.png" class="kg-image" alt="9NnVZviy8j8wW69H6Dh5vYQcLwchkTGSvJSF" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/9NnVZviy8j8wW69H6Dh5vYQcLwchkTGSvJSF.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/9NnVZviy8j8wW69H6Dh5vYQcLwchkTGSvJSF.png 800w" sizes="(min-width: 720px) 720px" width="800" height="608" loading="lazy"><figcaption>Uma imagem que você criará no <em>CSS Básico: variáveis do CSS em cascata</em></figcaption></figure><p>Para aperfeiçoar nosso CSS, completaremos a nossa seção de <strong>design visual aplicado</strong> até podermos <strong>criar uma forma mais complexa usando o CSS e o HMTL</strong>. Depois, faremos todo o <strong>design responsivo para a web</strong> e a seção do <strong>CSS Flexbox</strong>. Estamos pulando alguns dos desafios e seções por agora, já que o nosso objetivo é aprender o que precisamos imediatamente. As outras seções são ótimas, mas não precisaremos delas no momento. </p><p>Agora que aprendemos a usar o HTML e o CSS para construir e estilizar uma página de <em>web</em>, teremos uma prática mais efetiva completando o <strong>design responsivo para a web</strong>. Esses projetos usarão tudo o que aprendemos até agora para construir cinco <em>sites</em>.</p><h4 id="controle-de-vers-o"><strong>Controle de versão</strong></h4><p>O controle de versão é um sistema onde você salva arquivos para que possa vê-los novamente no futuro e perceber o que você alterou e em que momento. Isso provavelmente será usado em toda empresa de <em>software</em> em que você for trabalhar. Assim, ter esse conhecimento é muito importante.</p><p>Aprenda como instalar o Git, crie uma conta no GitHub e trabalhe com ambos. Há um tutorial ótimo em <a href="https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners">Uma Introdução ao Git e GitHub</a> (em inglês). Você pode aprender os dois antes mesmo dos projetos de design do HTML e CSS e começar a usar o controle de versão desses projetos.</p><p>Quando souber como usar o controle de versão, tente fazer todos os seus projetos em um editor local (como o <a href="https://code.visualstudio.com/">VS Code</a>) e faça um <em>upload</em> deles para o CodePen quando terminá-los. Trabalhar em um editor local será exatamente o que você fará em um emprego. Isso, portanto, ajudará você a construir mais essa experiência.</p><p>Há muitas maneiras de se usar o Git/controle de versão, mas você quer saber como criar um repositório no GitHub, vinculá-lo a uma pasta local, incorporar os trabalhos que você fez e colocar tudo isso no GitHub. Uma vez que você possa fazer isso, será capaz de trabalhar de maneia efetiva e, assim, fazer realmente parte do time de desenvolvedores.</p><h4 id="javascript"><strong><strong>JavaScript</strong></strong></h4><p>O JavaScript é a linguagem que alimenta 94.8% dos <em>sites</em> da <em>web </em>na internet. Isso representa muitos sites! O JavaScript permite mudar um site de estático para um completamente interativo. </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/0Nbc87SRHKhCzKuwMSSQTeT8xMz4nHkdGOxE.jpg" class="kg-image" alt="0Nbc87SRHKhCzKuwMSSQTeT8xMz4nHkdGOxE" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/0Nbc87SRHKhCzKuwMSSQTeT8xMz4nHkdGOxE.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/0Nbc87SRHKhCzKuwMSSQTeT8xMz4nHkdGOxE.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="450" loading="lazy"></figure><p>Para aprender JavaScript, podemos fazer o <strong>certificação de algoritmos e estruturas de dados em JavaScript</strong>, no <a href="https://www.freecodecamp.org/portuguese/learn/">freeCodeCamp</a>. Como o Javascript é uma parte tão grande dos<em> sites</em> modernos, completaremos toda a grade dessa certificação. Pode parecer muito trabalho, mas quando você trabalha como desenvolvedor para a <em>web</em>, passará a maior parte do tempo escrevendo em JavaScript. Assim, é importante que você realmente tenha capacidade de trabalhar com ele.</p><h4 id="construindo-seu-portf-lio"><strong>Construindo seu portfólio </strong></h4><p>Para mostrar do que você é capaz, você precisa ter um portfólio para mostrar aos seus possíveis empregadores. Felizmente, você já terá 10 projetos — 5 em HTML e CSS e 5 em JavaScript. Assegure-se de ter todos eles em controle de versão e transferidos para o GitHub para que outras pessoas (futuros empregadores) possam vê-los e saber do potencial do seu trabalho. &nbsp;</p><p>Agora, você poderá voltar ao <em>site</em> de portfólio que você construiu e atualizar com todos os seus projetos novos. Você também pode utilizar seus conhecimentos em JavaScript para adicionar interatividade à sua página. Pode ser uma descrição em <em>pop-up</em> quando o usuário passar sobre um de seus projetos, um <em>slideshow</em> de imagens ou até mesmo um <em>minigame</em>.</p><h3 id="a-procura-de-emprego"><strong>A procura de emprego</strong></h3><p>Se você fez tudo até agora, já deve cumprir os requisitos de muitos empregos para desenvolvedor para a <em>web </em>júnior. Esse é o momento de se candidatar a alguns empregos. </p><p>Para se candidatar a maioria dos empregos, você precisara de um currículo (CV). Ele deve destacar seus pontos fortes sem atrair atenção demais a quanto tempo você está programando ou ao fato de que você não tem nenhuma experiência comercial. </p><p>Aqui está o CV que eu usei para conseguir meu segundo emprego: &nbsp;</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/2TPq8xaUaP7SFMggokwL4w1hnWXBN3CHBcfW.png" class="kg-image" alt="2TPq8xaUaP7SFMggokwL4w1hnWXBN3CHBcfW" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/2TPq8xaUaP7SFMggokwL4w1hnWXBN3CHBcfW.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/2TPq8xaUaP7SFMggokwL4w1hnWXBN3CHBcfW.png 794w" sizes="(min-width: 720px) 720px" width="794" height="1123" loading="lazy"></figure><p>Saber a quais empregos você deve se candidatar também é importante. Isso pode parecer errado, mas você deveria se candidatar a empregos onde você consegue cumprir 80% (ou mais) dos requisitos. Você sempre pode salientar que, como um desenvolvedor autodidata, você provavelmente atingirá outras exigências mais rápido que os demais. </p><p>É claro que isso não quer dizer que você deva se candidatar a <strong>todo</strong> emprego em que você atenda aos requisitos. Apenas se candidate aos trabalhos que você considere interessantes e que você aceitaria se fossem oferecidos a você. </p><h4 id="usando-os-recrutadores"><strong>Usando os recrutadores</strong></h4><p>Os recrutadores podem ser ferramentas poderosas para conseguir seu primeiro emprego. Eles sabem o que a empresa quer, frequentemente têm empregos que não estão anunciados nos classificados e querem que você consiga o emprego... é assim que eles são pagos.</p><p>Para ter certeza de que seu CV estará nas mãos do maior número possível de recrutadores, precisaremos nos candidatar em vários <em>sites</em>. Comece com os <em>sites</em> maiores, como o <em>Indeed</em> e o <em>Total Jobs</em>, mas tente encontrar sites menores também.</p><p>Muitos desenvolvedores falam sobre o fato de recrutadores serem "terríveis", mas precisamos nos certificar de que podemos ter neles aliados. Sempre que você falar com um recrutador, assegure-se de ser educado e respeitoso. Se eles sondarem você sobre trabalhos que estão muito aquém do que você deseja, agradeça-os e recuse, mas lembre-os de que tipo de emprego você está procurando.</p><p>Meus dois primeiros empregos vieram de recrutadores perguntando sobre um emprego que não era adequado para mim, mas eles tinham outra oferta que era perfeita. Por isso, não seja tão duro com eles. </p><h3 id="continue-se-aprimorando"><strong>Continue se aprimorando</strong></h3><p>Você, provavelmente, não conseguirá uma entrevista e oferta de trabalho na primeira semana em que estiver se candidatando. Você pode não conseguir uma entrevista nem no primeiro mês, mas isso dará a você mais tempo para se aperfeiçoar. </p><p>Agora que alcançamos os requisitos básicos, podemos começar a adicionar mais <strong>itens interessantes de se ter</strong> no kit de ferramentas. Agora é a hora de acrescentar uma nova ferramenta na sua caixa. Incorporar mais habilidades às suas fará com que mais empregadores queiram você e, assim, aumentará suas chances de conseguir uma entrevista. Aqui estão alguns conhecimentos para se adquirir: </p><h4 id="aprenda-uma-biblioteca"><strong>Aprenda uma biblioteca </strong></h4><p>Existem bibliotecas de JavaScript que podem facilitar muito a sua vida. Uma das bibliotecas mais populares é o jQuery, que ajuda com a manipulação do DOM, funções de objetos e de <em>arrays</em> e muito mais.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/JMHNSHdpHxncf6ouMuWnovyaubs41lLqz93Z.png" class="kg-image" alt="JMHNSHdpHxncf6ouMuWnovyaubs41lLqz93Z" srcset="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/JMHNSHdpHxncf6ouMuWnovyaubs41lLqz93Z.png 600w" width="600" height="311" loading="lazy"></figure><p>Eu recomendaria aprender a utilizar o jQuery porque é uma ótima introdução à utilização das bibliotecas em JavaScript. Há vários cursos e tutoriais para aprender jQuery, mas eu ainda prefiro o do freeCodeCamp.</p><blockquote>Nota da tradução: no momento da tradução deste texto, outras bibliotecas foram adquirindo uma importância maior no mundo do desenvolvimento e, agora, conhecer bibliotecas como o React, o Vue ou o Angular serão de maior utilidade para você no desenvolvimento para a web.</blockquote><h4 id="completando-as-aulas-de-html-e-css"><strong>Completando as aulas de HTML e CSS </strong></h4><p>Volte para as aulas de HTML e CSS do freeCodeCamp e complete o resto das lições em <strong>design visual aplicado, acessibilidade aplicada</strong> e <strong>CSS Grid</strong>. </p><h4 id="aprendendo-como-o-javascript-funciona"><strong>Aprendendo como o JavaScript funciona </strong></h4><p>Saber usar o JavaScript é ótimo, mas entender como ele funciona pode ajudar você a se tornar um desenvolvedor muito melhor. Isso permitirá escrever o melhor código possível, já que você saberá o como e o porquê que esse código conserta o problema. </p><p>Para atingir esse conhecimento profundo de JavaScript, eu recomendo fortemente a série de livros "<a href="https://github.com/getify/You-Dont-Know-JS">You Don't Know JS</a>". Os primeiros dois livros são ótimos para compreender os princípios básicos do JavaScript. Entendê-los dará a você um excelente fundamento com o qual você poderá se tornar um desenvolvedor ainda melhor. Eles podem ser acessados <a href="https://github.com/getify/You-Dont-Know-JS">ON-LINE e GRATUITAMENTE</a> ou comprados no formato de <a href="https://www.amazon.co.uk/s/ref=dp_byline_sr_book_1?ie=UTF8&amp;text=Kyle+Simpson&amp;search-alias=books-uk&amp;field-author=Kyle+Simpson&amp;sort=relevancerank">capa dura</a>. </p><h4 id="criando-projetos"><strong>Criando projetos </strong></h4><p>Outro jeito de aperfeiçoar suas habilidades é criando projetos. Eles podem ser qualquer coisa, mas seu objetivo é praticar usando as ferramentas com as quais você tenha menos experiência. Não é bom com <em>arrays</em>? Crie um aplicativo de lista de compras. Um pouco hesitante em estilização? Tente fazer uma cópia exata de algum <em>site</em> da <em>web </em>existente.</p><p>Esses projetos deverão aprimorar seus conhecimentos. Então, se for fácil demais ou muito complicado, pare e comece um projeto que se ajuste melhor ao seu nível. </p><p>Às vezes, ao criar um projeto, você talvez precise aprender uma habilidade completamente diferente. Aprender enquanto se faz pode ser um aprendizado excelente para algumas pessoas. </p><h3 id="entrevistas"><strong>Entrevistas</strong></h3><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/si-pgLtrX14CeKaLjqGK9TjSkcdr9u4lKRVL.jpg" class="kg-image" alt="si-pgLtrX14CeKaLjqGK9TjSkcdr9u4lKRVL" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/si-pgLtrX14CeKaLjqGK9TjSkcdr9u4lKRVL.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/si-pgLtrX14CeKaLjqGK9TjSkcdr9u4lKRVL.jpg 800w" sizes="(min-width: 720px) 720px" width="800" height="372" loading="lazy"></figure><p>Depois de se candidatar a diversos empregos e de continuar a aprimorar suas habilidades, esperamos que você seja convidado a uma entrevista. Essa é sua hora de brilhar. Há diversos artigos sobre como abordar o processo de entrevistas. Então, eu não examinarei muito a fundo os detalhes aqui, mas destacarei o que <a href="https://medium.com/@samwsoftware/how-to-secure-the-job-of-your-dreams-by-smashing-your-interview-61f38b7cdd0e">este artigo</a> (em inglês) diz: </p><ul><li>Conheça seu CV </li><li>Conheça a empresa </li><li>Pratique suas habilidades </li><li>Seja pontual, educado e confiante </li><li>Faça perguntas </li><li>Acompanhe o processo após a entrevista </li></ul><p>Se você seguir todos esses conselhos, você terá uma boa chance de conseguir uma oferta de emprego. Mesmo que não consiga, certifique-se de pedir um <em>feedback</em> para poder usá-lo da melhor maneira na sua próxima entrevista. </p><h3 id="resumo"><strong>Resumo </strong></h3><p>Se você quer se tornar um desenvolvedor, deve buscar um emprego de desenvolvedor para a <em>web</em> júnior o mais rápido possível para conseguir a experiência e o apoio de desenvolvedores sênior. Para conseguir esse tipo de emprego, você precisa: </p><ul><li>aprender HTML, CSS e JavaScript </li><li>construir um portfólio de projetos menores </li></ul><p>Uma vez que você tenha feito isso, você pode começar a se candidatar a vagas de emprego. </p><p>Então, prepare-se bem para as entrevistas e continue a adquirir novas habilidades enquanto espera por <em>aquela</em> oferta. </p><p>Obrigado por ler este guia para se tornar um desenvolvedor e para conseguir seu primeiro emprego. Se gostou dele, <a href="https://medium.com/@samwsoftware">siga o autor no Medium</a> para ver mais dicas e truques para desenvolvedores.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/BXkVzP4g632xPGiEZpYAHIEVphLWtaypKmBz.gif" class="kg-image" alt="BXkVzP4g632xPGiEZpYAHIEVphLWtaypKmBz" width="800" height="288" loading="lazy"></figure> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
