Rui  Silva

Rui Silva

1679005260

Como criar Job Board por Web Scraping e ChatGPT

Neste tutorial do ChatGPT, aprenderemos sobre como criar um quadro de empregos por Web Scraping e ChatGPT. como construir um quadro de empregos raspando o Google e sites de software de recrutamento, como Workable e Lever, a fim de coletar vagas de emprego. 

Você aprenderá a usar a API do ChatGPT para extrair informações úteis das vagas de emprego. O ChatGPT é uma ferramenta de Inteligência Artificial que pode ser utilizada para gerar, resumir, classificar ou extrair texto.

Há um grande número de vagas de emprego! Se você quisesse criar um quadro de empregos que coletasse vagas de emprego, como faria para encontrá-las? E depois de coletá-los, como você faria para extrair informações úteis, como salário e benefícios?


Definindo os pré-requisitos

Este tutorial usará o NodeJS v18.12.1 , bem como a biblioteca NodeJS da Open AI. No entanto, os conceitos deste tutorial também se aplicam a qualquer idioma. O Open AI também oferece bibliotecas para Python, C#, .NET, Crystal, Go, Java, PHP, R, Ruby e Swift.

Da mesma forma, neste tutorial você usará o NodeJS SDK do ScrapingBee. No entanto, também está disponível Python, NodeJS, Java, Ruby, PHP e Go.

Para configurar o novo projeto Node:

$ npm init
$ npm install openai
$ npm install scrapingbee
$ npm install axios # To easily make http requests

Etapa um: coletar empresas para raspar

A maioria das empresas usa software de recrutamento, como Workable ou Lever, para hospedar suas vagas. Esses sites hospedam as vagas em seus subdomínios. Por exemplo, no caso do Workable, as vagas são hospedadas no https://apply.workable.com/{company_name}. Assim, você pode criar rapidamente uma lista de empresas para obter vagas de emprego usando uma consulta de pesquisa do Google para encontrar sites que correspondam a esse formato. Você pode fazer isso usando uma consulta de pesquisa com o formato {search_term} site:https://apply.workable.com/*. Por exemplo, veja a imagem abaixo para remote software engineer site:https://apply.workable.com/*:


 

Resultados de pesquisa do Google para "site de engenheiro de software remoto: https://apply.workable.com/

Para extrair esses resultados do Google com mais eficiência, você pode usar o Google Scraper do ScrapingBee :

import axios from 'axios';

export const retrieveGoogleURLSforSearchTerm = async (searchTerm) => {
    const response = await axios.get('https://app.scrapingbee.com/api/v1/store/google', {
        params: {
            api_key: 'YOUR SCRAPINGBEE API KEY',
            search: searchTerm,
        },
    });
    const organicResults = response.data.organic_results;
    return urls = organicResults.map((organicResult) => organicResult.url)
};

Etapa dois: Recuperar aberturas para raspar

Agora que você tem uma lista de URLs viáveis ​​para extrair vagas de emprego, a próxima etapa é extrair os links para cada vaga individual.


Como a página pode conter URLs que não são para vagas de emprego, você precisará filtrá-los. Por exemplo, no caso do Workable, cada abertura individual é hospedada em uma url com o formato https://apply.workable.com/{company}/j/{job_id}e, portanto, você deve filtrar nossos links que não correspondem a esse formato.

Uma “pegadinha” é que às vezes o Workable pode detectar sua localização e aplicar filtros automaticamente com base nela:

Filtro de localização aplicado no Workable

Isso reduz muito o número de links que você poderá extrair, pois mostra apenas vagas de emprego para aquele local. Assim, você precisará remover este filtro. Para fazer isso, você pode executar Javascript personalizado para clicar no botão “Limpar filtros” acima:

import { ScrapingBeeClient } from 'scrapingbee';

const scrapingBeeClient = new ScrapingBeeClient('YOUR API KEY');
const js_scenario = {
    instructions: [
        { wait: 3000 },
        { evaluate:
                `const dismissButton = document.getElementsByClassName('button--2de5X button--14TuV tertiary--1L6hu styles--2s5xh')[0];
      if (dismissButton) {
        const clickEvent = new MouseEvent('click', { view: window, bubbles: true, cancelable: false });
        dismissButton.dispatchEvent(clickEvent);
      }`
        },
        { wait: 2000 },
    ],
};

const response = await scrapingBeeClient.get({
    url,
    {
        extract_rules,
            js_scenario,
    },
});

Etapa três: analisando as informações da vaga de emprego

Agora que você tem uma lista completa de URLs de vagas de emprego, você vai querer extrair e analisar informações úteis deles. Algumas informações, como cargo e localização, serão fáceis de recuperar usando seletores CSS , enquanto outras informações, como salário, descrição do cargo e benefícios, serão mais difíceis.

Por que é difícil extrair a descrição e os benefícios do trabalho

Às vezes, a descrição do trabalho e os benefícios serão agrupados em seu próprio div com um identificador de rótulo agradável. Assim, será fácil recuperar o texto usando seletores CSS. No entanto, outras vezes, todo o texto pode estar em um único div, tornando muito mais difícil separar a descrição do trabalho e os benefícios.

 

Descrição do trabalho e benefícios em divs separados, facilitando a análise


Descrição do trabalho e benefícios em divs separados, facilitando a análise

Descrição do trabalho e benefícios no mesmo div, dificultando a análise


Descrição do trabalho e benefícios no mesmo div, dificultando a análise

 

Para analisar facilmente a descrição do trabalho e os benefícios, você usará o ChatGPT para extrair a descrição do trabalho e os benefícios em textos separados.

Uma Breve Introdução à API ChatGPT

Para usar a API ChatGPT, você precisará criar uma conta com Open AI para gerar uma chave de API. Depois de ter uma chave de API, você poderá fazer solicitações de API.

Aqui está um exemplo de como pode ser uma solicitação:

import axios from 'axios';

const exampleChatGPTRequest = async () => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: "Extract the benefits from the following job opening…" },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Observe o messagesargumento no exemplo acima. É assim que você solicita que o ChatGPT execute tarefas. As systemmensagens ajudam a definir o comportamento do ChatGPT. As usermensagens ajudam a instruir o assistente.

Uma introdução completa à API do ChatGPT pode ser visualizada em seus documentos .

Tokens e os custos da API ChatGPT

O ChatGPT utiliza um modelo de precificação baseado no uso. O custo da API é de US$ 0,002 por 1.000 tokens. Um token pode ser pensado como aproximadamente 4 caracteres ou 0,75 palavras. Quando você faz uma solicitação de API, o texto no messagesparâmetro é convertido em tokens. A resposta da API também é convertida em tokens. Isso significa que o custo de sua solicitação de API é o número de tokens em sua solicitação mais o número de tokens na resposta.

Como extrair a descrição e os benefícios do trabalho usando o ChatGPT

Primeiro, você extrairá todo o texto da página de vagas de emprego. Você solicitará ao ChatGPT para extrair a descrição do trabalho e os benefícios deste texto:

import axios from 'axios';

const getJobDescription = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the description from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

const getJobBenefits = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the benefits from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Aqui está um exemplo de saída desta vaga de emprego:

Description:
    - Arranging meetings and producing meeting minutes;
    - Set up and maintain project files;
    - Collect actuals data and forecasts;
    - Update project plans;
    - Administer or assist the quality review process;
    - Administer or assist Project Board meetings;
    - Assist with the compilation of reports;
    - Contribute expertise in specialist tools and techniques;
    - Maintain the following records: Quality Register, Configuration Item Records, any other registers/logs delegated by the Project Manager;
    - Administer the configuration management procedure.
Requirements:
    - Minimum 3 years of relevant education (bachelor degree or equivalent) after the secondary school.
    - Minimum 2 years of relevant professional experience, of which minimum 1 year experience in IT project support.
    - Experience of working within a project management office utilising Prince 2 or an equivalent project management methodology is needed.
    - Prince 2 foundation qualifications or an equivalent industry standard project management methodology.

Resultados:

The job involves arranging meetings and producing minutes, maintaining project files, updating project plans and contributing expertise in specialist tools and techniques. The candidate is also expected to collect actuals data and forecasts, administer Project Board meetings, assist with report compilation and maintain records such as Quality Register and Configuration Item Records. Additionally, they are supposed to administer the quality review process and configuration management procedure.

Analisando Salário com ChatGPT

O salário é uma das informações mais interessantes em que um candidato a emprego está interessado. No entanto, analisá-lo a partir de uma vaga de emprego não é direto. Você pode considerar fazer uma pesquisa de texto simples para um símbolo ou código de moeda (por exemplo, “$” ou “USD”), mas isso não funcionará, pois:

  • Às vezes, a vaga de emprego inclui os dados de financiamento da empresa. Por exemplo, "Arrecadamos $ 800.000 em financiamento pré-semente".
  • Às vezes, a vaga de emprego inclui um orçamento de aprendizado. Por exemplo, "orçamento anual de aprendizado de US$ 5.000".
  • Nem todas as vagas incluem uma faixa salarial.

Assim, uma maneira mais simples seria apenas usar o ChatGPT novamente:

import axios from 'axios';

const getJobSalary = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the salary from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Aqui está um exemplo de saída desta vaga de emprego:

Company Description:
We are a fast-growing tech startup that provides cutting-edge software solutions for businesses across various industries. Our company has recently raised $10 million in funding from top-tier investors and we are poised for rapid growth. We have a dynamic and collaborative work culture that values innovation, creativity, and excellence.

Job Overview:
We are seeking a talented and experienced Java Developer to join our development team. The successful candidate will be responsible for designing, developing, and maintaining software applications using Java technologies. They will work closely with cross-functional teams to deliver high-quality software solutions that meet customer requirements.

Key Responsibilities:

Design, develop, and maintain Java-based software applications
Write clean, efficient, and well-documented code
Collaborate with cross-functional teams to understand requirements and deliver high-quality software solutions
Participate in code reviews and contribute to the development of best practices
Troubleshoot and debug software issues as needed
Stay up-to-date with emerging trends and technologies in Java development

Requirements:

Bachelor's degree in Computer Science or a related field
3+ years of experience in Java development
Experience with Spring Framework, Hibernate, and SQL
Strong understanding of object-oriented programming principles
Familiarity with agile software development methodologies
Excellent problem-solving and analytical skills
Strong communication and teamwork skills
Salary Range: $90,000-$120,000

If you are passionate about Java development and want to work in a fast-paced and dynamic environment, please apply with your resume and a cover letter highlighting your relevant experience and skills. We look forward to hearing from you!

Resultados:

The salary range for the Java Developer position is $90,000-$120,000, commensurate with experience and qualifications.

Você ainda precisaria analisá-lo e regexp para obter a faixa salarial real. No entanto, este é um bom começo.

Vamos tentar ajustar um pouco o prompt: "Extrair o salário da vaga de emprego. Extraí-lo como uma variável JS chamada salário"

E aqui está o resultado:

```javascript
const salary = "$90,000-$120,000";

Muito melhor!

Conclusão

Como podemos ver, o ChatGPT é uma ótima ferramenta para extrair informações de vagas de emprego. É rápido, fácil de usar e econômico. Você pode usá-lo para extrair informações de qualquer texto, não apenas de vagas de emprego.

No entanto, sua natureza não determinística pode ser um problema. Além do fato de que pode ser difícil gerar uma saída no formato que queremos.

Mas com alguma prática e limpeza e validação corretas de dados, você pode obter ótimos resultados!

O ChatGPT pode ser um pouco jovem demais para fornecer dados a sistemas críticos, mas é definitivamente bom o suficiente para extrair informações para alimentar uma ferramenta que tolera algum ruído de tempos em tempos.

Espero que você tenha aprendido algo novo hoje. Se você tiver mais dúvidas relacionadas à raspagem da web ou ao ChatGPT, sinta-se à vontade para entrar em contato conosco! Gostaríamos muito de ajudá-lo.

Fonte do artigo original em: https://www.scrapingbee.com

#chatgpt  #openai 

What is GEEK

Buddha Community

Como criar Job Board por Web Scraping e ChatGPT
Deion  Hilpert

Deion Hilpert

1592374589

Web Scraping Job Boards: How to apply for the best jobs first

We’ve all heard it: Looking for a job is a full-time job! So, if I will claim to bring efficiency to my future role, let me start with the…

#python-programming #web-scraping #job-search #pandas-dataframe #regex #web scraping job boards

Rui  Silva

Rui Silva

1679005260

Como criar Job Board por Web Scraping e ChatGPT

Neste tutorial do ChatGPT, aprenderemos sobre como criar um quadro de empregos por Web Scraping e ChatGPT. como construir um quadro de empregos raspando o Google e sites de software de recrutamento, como Workable e Lever, a fim de coletar vagas de emprego. 

Você aprenderá a usar a API do ChatGPT para extrair informações úteis das vagas de emprego. O ChatGPT é uma ferramenta de Inteligência Artificial que pode ser utilizada para gerar, resumir, classificar ou extrair texto.

Há um grande número de vagas de emprego! Se você quisesse criar um quadro de empregos que coletasse vagas de emprego, como faria para encontrá-las? E depois de coletá-los, como você faria para extrair informações úteis, como salário e benefícios?


Definindo os pré-requisitos

Este tutorial usará o NodeJS v18.12.1 , bem como a biblioteca NodeJS da Open AI. No entanto, os conceitos deste tutorial também se aplicam a qualquer idioma. O Open AI também oferece bibliotecas para Python, C#, .NET, Crystal, Go, Java, PHP, R, Ruby e Swift.

Da mesma forma, neste tutorial você usará o NodeJS SDK do ScrapingBee. No entanto, também está disponível Python, NodeJS, Java, Ruby, PHP e Go.

Para configurar o novo projeto Node:

$ npm init
$ npm install openai
$ npm install scrapingbee
$ npm install axios # To easily make http requests

Etapa um: coletar empresas para raspar

A maioria das empresas usa software de recrutamento, como Workable ou Lever, para hospedar suas vagas. Esses sites hospedam as vagas em seus subdomínios. Por exemplo, no caso do Workable, as vagas são hospedadas no https://apply.workable.com/{company_name}. Assim, você pode criar rapidamente uma lista de empresas para obter vagas de emprego usando uma consulta de pesquisa do Google para encontrar sites que correspondam a esse formato. Você pode fazer isso usando uma consulta de pesquisa com o formato {search_term} site:https://apply.workable.com/*. Por exemplo, veja a imagem abaixo para remote software engineer site:https://apply.workable.com/*:


 

Resultados de pesquisa do Google para "site de engenheiro de software remoto: https://apply.workable.com/

Para extrair esses resultados do Google com mais eficiência, você pode usar o Google Scraper do ScrapingBee :

import axios from 'axios';

export const retrieveGoogleURLSforSearchTerm = async (searchTerm) => {
    const response = await axios.get('https://app.scrapingbee.com/api/v1/store/google', {
        params: {
            api_key: 'YOUR SCRAPINGBEE API KEY',
            search: searchTerm,
        },
    });
    const organicResults = response.data.organic_results;
    return urls = organicResults.map((organicResult) => organicResult.url)
};

Etapa dois: Recuperar aberturas para raspar

Agora que você tem uma lista de URLs viáveis ​​para extrair vagas de emprego, a próxima etapa é extrair os links para cada vaga individual.


Como a página pode conter URLs que não são para vagas de emprego, você precisará filtrá-los. Por exemplo, no caso do Workable, cada abertura individual é hospedada em uma url com o formato https://apply.workable.com/{company}/j/{job_id}e, portanto, você deve filtrar nossos links que não correspondem a esse formato.

Uma “pegadinha” é que às vezes o Workable pode detectar sua localização e aplicar filtros automaticamente com base nela:

Filtro de localização aplicado no Workable

Isso reduz muito o número de links que você poderá extrair, pois mostra apenas vagas de emprego para aquele local. Assim, você precisará remover este filtro. Para fazer isso, você pode executar Javascript personalizado para clicar no botão “Limpar filtros” acima:

import { ScrapingBeeClient } from 'scrapingbee';

const scrapingBeeClient = new ScrapingBeeClient('YOUR API KEY');
const js_scenario = {
    instructions: [
        { wait: 3000 },
        { evaluate:
                `const dismissButton = document.getElementsByClassName('button--2de5X button--14TuV tertiary--1L6hu styles--2s5xh')[0];
      if (dismissButton) {
        const clickEvent = new MouseEvent('click', { view: window, bubbles: true, cancelable: false });
        dismissButton.dispatchEvent(clickEvent);
      }`
        },
        { wait: 2000 },
    ],
};

const response = await scrapingBeeClient.get({
    url,
    {
        extract_rules,
            js_scenario,
    },
});

Etapa três: analisando as informações da vaga de emprego

Agora que você tem uma lista completa de URLs de vagas de emprego, você vai querer extrair e analisar informações úteis deles. Algumas informações, como cargo e localização, serão fáceis de recuperar usando seletores CSS , enquanto outras informações, como salário, descrição do cargo e benefícios, serão mais difíceis.

Por que é difícil extrair a descrição e os benefícios do trabalho

Às vezes, a descrição do trabalho e os benefícios serão agrupados em seu próprio div com um identificador de rótulo agradável. Assim, será fácil recuperar o texto usando seletores CSS. No entanto, outras vezes, todo o texto pode estar em um único div, tornando muito mais difícil separar a descrição do trabalho e os benefícios.

 

Descrição do trabalho e benefícios em divs separados, facilitando a análise


Descrição do trabalho e benefícios em divs separados, facilitando a análise

Descrição do trabalho e benefícios no mesmo div, dificultando a análise


Descrição do trabalho e benefícios no mesmo div, dificultando a análise

 

Para analisar facilmente a descrição do trabalho e os benefícios, você usará o ChatGPT para extrair a descrição do trabalho e os benefícios em textos separados.

Uma Breve Introdução à API ChatGPT

Para usar a API ChatGPT, você precisará criar uma conta com Open AI para gerar uma chave de API. Depois de ter uma chave de API, você poderá fazer solicitações de API.

Aqui está um exemplo de como pode ser uma solicitação:

import axios from 'axios';

const exampleChatGPTRequest = async () => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: "Extract the benefits from the following job opening…" },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Observe o messagesargumento no exemplo acima. É assim que você solicita que o ChatGPT execute tarefas. As systemmensagens ajudam a definir o comportamento do ChatGPT. As usermensagens ajudam a instruir o assistente.

Uma introdução completa à API do ChatGPT pode ser visualizada em seus documentos .

Tokens e os custos da API ChatGPT

O ChatGPT utiliza um modelo de precificação baseado no uso. O custo da API é de US$ 0,002 por 1.000 tokens. Um token pode ser pensado como aproximadamente 4 caracteres ou 0,75 palavras. Quando você faz uma solicitação de API, o texto no messagesparâmetro é convertido em tokens. A resposta da API também é convertida em tokens. Isso significa que o custo de sua solicitação de API é o número de tokens em sua solicitação mais o número de tokens na resposta.

Como extrair a descrição e os benefícios do trabalho usando o ChatGPT

Primeiro, você extrairá todo o texto da página de vagas de emprego. Você solicitará ao ChatGPT para extrair a descrição do trabalho e os benefícios deste texto:

import axios from 'axios';

const getJobDescription = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the description from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

const getJobBenefits = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the benefits from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Aqui está um exemplo de saída desta vaga de emprego:

Description:
    - Arranging meetings and producing meeting minutes;
    - Set up and maintain project files;
    - Collect actuals data and forecasts;
    - Update project plans;
    - Administer or assist the quality review process;
    - Administer or assist Project Board meetings;
    - Assist with the compilation of reports;
    - Contribute expertise in specialist tools and techniques;
    - Maintain the following records: Quality Register, Configuration Item Records, any other registers/logs delegated by the Project Manager;
    - Administer the configuration management procedure.
Requirements:
    - Minimum 3 years of relevant education (bachelor degree or equivalent) after the secondary school.
    - Minimum 2 years of relevant professional experience, of which minimum 1 year experience in IT project support.
    - Experience of working within a project management office utilising Prince 2 or an equivalent project management methodology is needed.
    - Prince 2 foundation qualifications or an equivalent industry standard project management methodology.

Resultados:

The job involves arranging meetings and producing minutes, maintaining project files, updating project plans and contributing expertise in specialist tools and techniques. The candidate is also expected to collect actuals data and forecasts, administer Project Board meetings, assist with report compilation and maintain records such as Quality Register and Configuration Item Records. Additionally, they are supposed to administer the quality review process and configuration management procedure.

Analisando Salário com ChatGPT

O salário é uma das informações mais interessantes em que um candidato a emprego está interessado. No entanto, analisá-lo a partir de uma vaga de emprego não é direto. Você pode considerar fazer uma pesquisa de texto simples para um símbolo ou código de moeda (por exemplo, “$” ou “USD”), mas isso não funcionará, pois:

  • Às vezes, a vaga de emprego inclui os dados de financiamento da empresa. Por exemplo, "Arrecadamos $ 800.000 em financiamento pré-semente".
  • Às vezes, a vaga de emprego inclui um orçamento de aprendizado. Por exemplo, "orçamento anual de aprendizado de US$ 5.000".
  • Nem todas as vagas incluem uma faixa salarial.

Assim, uma maneira mais simples seria apenas usar o ChatGPT novamente:

import axios from 'axios';

const getJobSalary = async (scrapedText) => {
    const apiUrl = 'https://api.openai.com/v1/chat/completions';
    const headers = {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${'YOUR_API_KEY'}`,
    };
    const data = {
        model: 'gpt-3.5-turbo',
        messages: [
            { role: 'system', content: "Your job is to extract information from job openings." },
            { role: 'user', content: `Here is a job opening: ${scrapedText}\n\nExtract the salary from the job opening.` },
        ],
    };
    const result = await axios.post(apiUrl, data, { headers });
    return result.data.choices[0].message.content;
}

Aqui está um exemplo de saída desta vaga de emprego:

Company Description:
We are a fast-growing tech startup that provides cutting-edge software solutions for businesses across various industries. Our company has recently raised $10 million in funding from top-tier investors and we are poised for rapid growth. We have a dynamic and collaborative work culture that values innovation, creativity, and excellence.

Job Overview:
We are seeking a talented and experienced Java Developer to join our development team. The successful candidate will be responsible for designing, developing, and maintaining software applications using Java technologies. They will work closely with cross-functional teams to deliver high-quality software solutions that meet customer requirements.

Key Responsibilities:

Design, develop, and maintain Java-based software applications
Write clean, efficient, and well-documented code
Collaborate with cross-functional teams to understand requirements and deliver high-quality software solutions
Participate in code reviews and contribute to the development of best practices
Troubleshoot and debug software issues as needed
Stay up-to-date with emerging trends and technologies in Java development

Requirements:

Bachelor's degree in Computer Science or a related field
3+ years of experience in Java development
Experience with Spring Framework, Hibernate, and SQL
Strong understanding of object-oriented programming principles
Familiarity with agile software development methodologies
Excellent problem-solving and analytical skills
Strong communication and teamwork skills
Salary Range: $90,000-$120,000

If you are passionate about Java development and want to work in a fast-paced and dynamic environment, please apply with your resume and a cover letter highlighting your relevant experience and skills. We look forward to hearing from you!

Resultados:

The salary range for the Java Developer position is $90,000-$120,000, commensurate with experience and qualifications.

Você ainda precisaria analisá-lo e regexp para obter a faixa salarial real. No entanto, este é um bom começo.

Vamos tentar ajustar um pouco o prompt: "Extrair o salário da vaga de emprego. Extraí-lo como uma variável JS chamada salário"

E aqui está o resultado:

```javascript
const salary = "$90,000-$120,000";

Muito melhor!

Conclusão

Como podemos ver, o ChatGPT é uma ótima ferramenta para extrair informações de vagas de emprego. É rápido, fácil de usar e econômico. Você pode usá-lo para extrair informações de qualquer texto, não apenas de vagas de emprego.

No entanto, sua natureza não determinística pode ser um problema. Além do fato de que pode ser difícil gerar uma saída no formato que queremos.

Mas com alguma prática e limpeza e validação corretas de dados, você pode obter ótimos resultados!

O ChatGPT pode ser um pouco jovem demais para fornecer dados a sistemas críticos, mas é definitivamente bom o suficiente para extrair informações para alimentar uma ferramenta que tolera algum ruído de tempos em tempos.

Espero que você tenha aprendido algo novo hoje. Se você tiver mais dúvidas relacionadas à raspagem da web ou ao ChatGPT, sinta-se à vontade para entrar em contato conosco! Gostaríamos muito de ajudá-lo.

Fonte do artigo original em: https://www.scrapingbee.com

#chatgpt  #openai 

Autumn  Blick

Autumn Blick

1603805749

What's the Link Between Web Automation and Web Proxies?

Web automation and web scraping are quite popular among people out there. That’s mainly because people tend to use web scraping and other similar automation technologies to grab information they want from the internet. The internet can be considered as one of the biggest sources of information. If we can use that wisely, we will be able to scrape lots of important facts. However, it is important for us to use appropriate methodologies to get the most out of web scraping. That’s where proxies come into play.

How Can Proxies Help You With Web Scraping?

When you are scraping the internet, you will have to go through lots of information available out there. Going through all the information is never an easy thing to do. You will have to deal with numerous struggles while you are going through the information available. Even if you can use tools to automate the task and overcome struggles, you will still have to invest a lot of time in it.

When you are using proxies, you will be able to crawl through multiple websites faster. This is a reliable method to go ahead with web crawling as well and there is no need to worry too much about the results that you are getting out of it.

Another great thing about proxies is that they will provide you with the chance to mimic that you are from different geographical locations around the world. While keeping that in mind, you will be able to proceed with using the proxy, where you can submit requests that are from different geographical regions. If you are keen to find geographically related information from the internet, you should be using this method. For example, numerous retailers and business owners tend to use this method in order to get a better understanding of local competition and the local customer base that they have.

If you want to try out the benefits that come along with web automation, you can use a free web proxy. You will be able to start experiencing all the amazing benefits that come along with it. Along with that, you will even receive the motivation to take your automation campaigns to the next level.

#automation #web #proxy #web-automation #web-scraping #using-proxies #website-scraping #website-scraping-tools

E-Learning App Development: Types, Cost & Features

The growth of the online modes for students has increased since the pandemic. This growth has been possible with the help of E-learning software systems. This software has shown a future with more opportunities, even in this pandemic. This market will grow to a high of 350 billion dollars by 2025. Due to this pandemic, most education organizations have shifted to online modes. So, naturally, this means the need for E-learning software systems will grow. So, do you have a complete idea for your E-learning applications and are planning to develop one for your organization? E-learning product development is not a very difficult process to handle. To make the process easier for you, we have added the types of e-learning apps, its features, benefits, development cost and much more in this blog. To read more click on the link.

#e-learning web portals #e-learning development companies #development of software for e-learning #e-learning web portalsmobile applications for e-learning #e-learning product development #app development

Sival Alethea

Sival Alethea

1624402800

Beautiful Soup Tutorial - Web Scraping in Python

The Beautiful Soup module is used for web scraping in Python. Learn how to use the Beautiful Soup and Requests modules in this tutorial. After watching, you will be able to start scraping the web on your own.
📺 The video in this post was made by freeCodeCamp.org
The origin of the article: https://www.youtube.com/watch?v=87Gx3U0BDlo&list=PLWKjhJtqVAbnqBxcdjVGgT3uVR10bzTEB&index=12
🔥 If you’re a beginner. I believe the article below will be useful to you ☞ What You Should Know Before Investing in Cryptocurrency - For Beginner
⭐ ⭐ ⭐The project is of interest to the community. Join to Get free ‘GEEK coin’ (GEEKCASH coin)!
☞ **-----CLICK HERE-----**⭐ ⭐ ⭐
Thanks for visiting and watching! Please don’t forget to leave a like, comment and share!

#web scraping #python #beautiful soup #beautiful soup tutorial #web scraping in python #beautiful soup tutorial - web scraping in python