Estou tentando fazer uma requisição com scrapping de um site, porem quando tento puxar os dados ele puxa no console de boa, ai vou tentar mandar para uma tabela no site e da erro de cors.
import React, { useState } from 'react';
import './css/all.css';
import axios from 'axios';
const cors = require('cors');
app.use((req, res, next) => {
//Qual site tem permissão de realizar a conexão, no exemplo abaixo está o "*" indicando que qualquer site pode fazer a conexão
res.header("Access-Control-Allow-Origin", "*");
//Quais são os métodos que a conexão pode realizar na API
res.header("Access-Control-Allow-Methods", 'GET,PUT,POST,DELETE');
app.use(cors());
next();
});
function App() {
const cheerio = require('cheerio');
const [mostrar, setMostrar] = useState([]);
// URL da página que contém a tabela de links
const url = 'https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=intelbras';
async function run() {
try {
// Fazer uma requisição para a página
const response = await axios.get(url);
// Criar um objeto Cheerio com o HTML da página
const $ = cheerio.load(response.data);
// Encontrar a tabela de links
const table = $('#TableWithRules');
// Encontrar todos os links na tabela
const links = table.find('a');
// Lista para armazenar as informações coletadas
const results = [];
// Loop pelos links
for (let i = 0; i < links.length; i++) {
const link = links[i];
// Obter a URL do link
const linkUrl = $(link).attr('href');
// Adicionar "https://" à URL, se necessário
const fullLinkUrl = linkUrl.startsWith('http') ? linkUrl : `https://cve.mitre.org${linkUrl}`;
// Fazer uma requisição para a página do link
const linkResponse = await axios.get(fullLinkUrl);
// Criar um objeto Cheerio com o HTML da página do link
const link$ = cheerio.load(linkResponse.data);
// Encontrar as informações que deseja coletar, como o título e a descrição do CVE
const cveid = link$('h2').text().trim();
const data = link$('b').eq(1).text().trim().replace(/\//g, '');
// Adicionar as informações coletadas à matriz de resultados
results.push({
cveid: cveid,
data: `${data.substring(6, 8)}/${data.substring(4, 6)}/${data.substring(0, 4)}`,
link: fullLinkUrl
});
}
// Atualizar o estado da variável "mostrar" com os resultados coletados
setMostrar(results);
} catch (error) {
console.error(`Erro ao fazer a requisição para a página ${url}: ${error}`);
}
}
run();
return (
<div>
<header>
<nav>
<div className="navbar-menu">
<ul>
<li><a href="#">Mikrotik</a></li>
<li><a href="#">Ubiquiti</a></li>
<li><a href="#">Intelbras</a></li>
</ul>
</div>
</nav>
</header>
<aside>
<div className="sidebar-geral">
<div className="sidebar-logo">
<img src="assets/logo.png" alt="" />
</div>
<div className="sidebar-menu">
<ul>
<li><a href="#">Mikrotik</a></li>
<li><a href="#">Ubiquiti</a></li>
<li><a href="#">Intelbras</a></li>
</ul>
</div>
</div>
</aside>
<main>
<div className="tabela-geral">
<table>
<thead>
<tr>
<th>CVE-ID</th>
<th>Link</th>
<th>Data</th>
</tr>
</thead>
<tbody>
{mostrar.map((val, key) => {
return (
<tr key={key}>
<td>{val.cveid}</td>
<td>{val.data}</td>
<td>{val.link}</td>
</tr>
)
})}
</tbody>
</table>
</div>
</main>
</div>
);
}
export default App;