Registros de vagas se ligam, por um documento de código, a cartões estáveis de item.
Preserve no feed a identidade e o texto da fonte.

RSS significa Really Simple Syndication. É um formato de documento que leitores de feed podem abrir. O RSS é escrito em XML. XML é texto estruturado.

Use linhas que você já conferiu

Um Actor é um programa hospedado de coleta de dados. Uma Task é uma predefinição de entrada salva. O Actor Indeed Jobs Scraper coleta as linhas da fonte. Você escreve o feed RSS a partir de linhas que já conferiu. O Actor não escreve este feed para você.

Indeed é o site de vagas de onde essas linhas vêm. A build pública 1.2.14 pode devolver os campos de linha que este método usa. Esses campos são jobId, jobUrl, title, companyName, descriptionText, descriptionStatus, postedAt, postedAtRaw e scrapedAt. jobUrl é o endereço web da vaga. Um endereço web também se chama URL.

Um controle de duas linhas aceitou IDs da fonte, URLs da fonte e o texto completo da descrição. Esse controle tinha um limite de duas linhas. Uma amostra limitada não é todas as vagas do site. Este método não repara uma coleta bloqueada do Upwork. Ele não cria um feed nativo do Indeed.

A Indeed Jobs Scraper Task pública atual foi conferida em 2026-10-13T05:55:51.545104+00:00. A entrada salva dela é:

json
{"country": "us", "searchTerm": "software engineer", "maxItems": 100, "postedWithinDays": "7", "sortBy": "date", "maxPagesPerSearch": 2, "saveOnlyUniqueItems": true}
Use linhas que você já conferiu

Use essa entrada apenas como início. Substitua o termo de busca da amostra quando coletar linhas. Substitua também o país ou o local. maxItems 100 limita a solicitação. Não é a contagem de vagas encontradas. maxPagesPerSearch 2 limita as páginas de uma busca. Não é a cobertura completa do site. saveOnlyUniqueItems true pede que a coleta guarde cada item uma única vez. Você ainda confere os IDs antes de escrever o feed. Uma Task pública não significa que o trabalho do feed é automático.

A coleta, a comparação de linhas e a revisão de identidade vêm antes deste método. Identidade, aqui, significa o ID estável da fonte de um anúncio. Comece só com um conjunto limitado de linhas conferidas. Exclua uma linha quando o ID dela está ausente ou ainda em revisão.

Monte o feed em oito passos

  1. Defina a amostra e o propósito.

O propósito é dar a um leitor de feed um documento válido de anúncios conferidos. Comece com linhas úteis que tenham IDs conhecidos. Guarde um recibo de cobertura junto com elas. Um recibo de cobertura é uma nota curta de quais linhas o feed inclui. Exclua IDs ausentes. Exclua IDs que ainda estão em revisão.

  1. Escolha a regra de identidade do item.

Para um anúncio do Indeed, a chave é o texto indeed: seguido imediatamente de jobId. Um GUID é a cadeia de identidade do item. GUID significa identificador globalmente único. O RSS o guarda no elemento guid. Defina isPermaLink como false. false significa que o GUID não é um endereço web. Mantenha o mesmo GUID quando o título muda. Mantenha o mesmo GUID quando a descrição muda. Um novo ID da fonte gera um novo item do feed sob esta regra. Um novo ID da fonte não é prova de um novo cargo do empregador. Use um método separado quando precisar fazer a correspondência do mesmo cargo.

  1. Crie um feed RSS 2.0 com um channel.

O elemento raiz é rss, e a versão é 2.0. Coloque um channel dentro dele. Um channel é o grupo principal que guarda o título do feed e os itens. Um item é um anúncio de vaga no feed. A especificação RSS exige title, link e description do channel. Forneça os três. Adicione um item para cada linha útil. Dê a esse item um título. Dê a ele o endereço web original da vaga como link. Dê a ele uma descrição curta. A mesma especificação exige um title ou uma description em cada item. Este método fornece os dois. Mantenha o link do channel acessível ao seu leitor.

  1. Escreva o texto com um serializador de XML.

Este passo de escrita se chama serialização. Não cole o texto bruto da vaga no arquivo manualmente. Um e comercial ou um sinal de menor que pode quebrar o XML. As regras de sintaxe do XML mostram como esses caracteres devem ser escritos. Um serializador é um programa que escreve o texto em uma forma XML segura. Ele mantém letras Unicode, como é. Ele mantém o texto de consulta em um endereço web. Uma query string é o texto depois de um ponto de interrogação em um endereço web. Texto XML seguro não é HTML seguro. HTML é o formato usado para desenhar uma página web. Um serializador não torna seguro, para exibição, o HTML que foi colado. Use um resumo em texto simples no item. Mantenha o texto completo da vaga na página original da vaga. Use descriptionText só quando a conferência da sua linha aceitou descriptionStatus. companyName pode continuar na linha da fonte. O item do feed não o exige.

  1. Adicione pubDate só para um horário de publicação confirmado.

pubDate é o nome no RSS da data de publicação de um item. postedAt é opcional e é interpretado a partir do texto da fonte. Um valor preenchido de postedAt não prova um horário exato de publicação. Examine postedAtRaw e a evidência da fonte. Adicione pubDate só quando o horário de publicação e o fuso horário estiverem ambos confirmados. Se o horário está ausente, é relativo ou é incerto, ele continua indisponível. Um horário relativo, como uma frase que diz um número de dias atrás, não é exato. A próxima cadeia de data faz parte da amostra fictícia original. O estilo de data do RSS se parece com Mon, 12 Oct 2026 09:30:00 GMT. GMT é o nome de fuso que esse estilo usa para esse horário UTC. UTC significa Tempo Universal Coordenado. Quando o horário de publicação é desconhecido, deixe pubDate de fora. Você pode indicar o horário de observação no resumo do item ou no recibo de cobertura. scrapedAt é o horário de observação. Não use scrapedAt como o horário de publicação. lastBuildDate significa o horário em que o documento do feed foi montado. Adicione lastBuildDate só quando você acompanha esse horário de montagem em separado. Não use o horário de montagem para preencher uma data de vaga desconhecida.

  1. Reconcilie as linhas da fonte e os itens do feed.

Reconciliar significa comparar as duas listas e dar conta de cada linha. Informe os IDs conhecidos que você usou. Informe as linhas que excluiu. Informe as linhas que ainda estão sem resolução. Informe as chaves duplicadas. Informe a contagem de itens sem data de publicação. Um feed montado a partir de um conjunto de dados limitado continua limitado. Um item ausente em uma amostra posterior não prova que o empregador removeu a vaga. Como um leitor exclui ou atualiza itens é uma escolha separada.

  1. Analise o feed e confira-o em três camadas.

Analisar significa ler o documento e confirmar a estrutura dele. Primeiro, analise o XML. Confirme os elementos obrigatórios. Confirme a contagem de itens. Confirme que cada GUID é único. Confirme que cada GUID permanece o mesmo quando o texto muda. Confirme o link de cada item. Confirme que o texto analisado corresponde ao texto da fonte. Confirme que cada data conserva o significado da fonte. Uma análise bem-sucedida mostra que a estrutura do XML é sólida. Ela não prova todas as regras do RSS. Ela não prova que todo leitor aceitará o feed. Em segundo lugar, confira as regras do RSS das quais você depende. Em terceiro lugar, teste o leitor que você pretende usar. Importar significa abrir o feed nesse leitor. Importe um feed fictício pequeno antes de adicionar linhas reais. Mantenha esse teste do leitor separado do teste do documento.

  1. Salve o feed e as notas que o explicam.

Guarde juntas a nota de cobertura, a nota de data e o recibo da fonte. Um recibo da fonte registra quais linhas conferidas você usou. Hospede o arquivo só quando o seu leitor precisar de acesso. Hospedar significa colocar o arquivo em um lugar de onde o leitor possa obtê-lo. Este artigo não publica um feed ao vivo. Ele não revela uma chave de acesso privada. Ele não agenda atualizações. Ele não envia alertas. Acompanhar vagas não vistas é uma tarefa separada.

Leia o feed fictício de dois itens

O feed desta seção é ficção original. Ele ensina as regras. Não é um resultado do Actor. Não é prova de que existem apenas duas vagas.

A amostra tem dois anúncios da fonte. Os IDs da fonte são os valores de texto 000101 e 000102. J1 e J2 são apenas rótulos dessas duas linhas fictícias. Os GUIDs são indeed:000101 e indeed:000102. J1 tem um horário de publicação confirmado de 12 de outubro de 2026 às 09:30 UTC. J2 tem um horário de publicação desconhecido, por isso a data de publicação está indisponível.

Leia o feed fictício de dois itens
LinhaID da fonteGUIDLink do itemData de publicação
J1000101indeed:000101https://jobs.example/J1?role=analyst&city=AustinMon, 12 Oct 2026 09:30:00 GMT
J2000102indeed:000102https://jobs.example/J2Indisponível

J1 tem o título Café Analyst & SQL. A descrição é Check values < 10 & explain results. J2 tem o título Report Analyst. A descrição é Publication time unavailable. Observed 2026-10-13 05:50 UTC. Esse horário de observação não é um horário de publicação.

O título de J1 testa Unicode e um e comercial. A descrição de J1 testa um sinal de menor que e um e comercial. O link de J1 testa uma query string. O feed armazena esses caracteres em texto XML seguro.

Leia o feed fictício de dois itens
Texto da fonteTexto escrito no feed
Café Analyst & SQLCafé Analyst &amp; SQL
Check values < 10 & explain results.Check values &lt; 10 &amp; explain results.
https://jobs.example/J1?role=analyst&city=Austinhttps://jobs.example/J1?role=analyst&amp;city=Austin
xml
<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0">
  <channel>
    <title>Fictional checked analyst sample</title>
    <link>https://jobs.example/sample</link>
    <description>Two checked sample rows; source collection was capped.</description>
    <item>
      <title>Café Analyst &amp; SQL</title>
      <link>https://jobs.example/J1?role=analyst&amp;city=Austin</link>
      <description>Check values &lt; 10 &amp; explain results.</description>
      <guid isPermaLink="false">indeed:000101</guid>
      <pubDate>Mon, 12 Oct 2026 09:30:00 GMT</pubDate>
    </item>
    <item>
      <title>Report Analyst</title>
      <link>https://jobs.example/J2</link>
      <description>Publication time unavailable. Observed 2026-10-13 05:50 UTC.</description>
      <guid isPermaLink="false">indeed:000102</guid>
    </item>
  </channel>
</rss>
Leia o feed fictício de dois itens

J1 corresponde ao primeiro item. O GUID dele é indeed:000101, e o pubDate dele é o horário UTC confirmado. J2 corresponde ao segundo item. O GUID dele é indeed:000102. A lacuna de data é o pubDate ausente em J2. A descrição de J2 indica apenas o horário de observação. Não preencha essa lacuna com o horário em que você montou o documento.

Um teste local do documento analisou este XML. Ele encontrou um channel e dois itens. Ele confirmou o texto obrigatório do channel. Ele confirmou que os dois GUIDs são únicos e que isPermaLink é false. Depois da análise, o texto correspondeu ao título em Unicode, ao sinal de menor que, aos e comerciais e ao link de consulta original. O teste leu a data de publicação de J1. Ele confirmou que J2 não tem pubDate. Ele alterou o título de J1, e o GUID continuou indeed:000101.

Estas são conferências do documento nesta amostra fictícia. A análise do XML mostra uma estrutura sólida. As conferências de GUID, de link, de texto e de data cobrem as regras do RSS usadas aqui. Nenhum teste de leitor de feed foi feito. Nenhum teste do WordPress foi feito. Analise primeiro o seu feed fictício. Depois faça uma conferência pequena de compatibilidade no seu próprio leitor.

Fontes e leituras adicionais

Por Chronometrica · Atualizado

Voltar ao topo ↑