Back to blocks

动态数据抓取指南

4.0
en技术教程数据抓取动态数据网页爬虫

Prompt

build a dynamic data scraper.

Résultat Généré

import React, { useState, useEffect } from 'react';
import './App.css';

const App = () => {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch('https://api.example.com/data');
        if (!response.ok) {
          throw new Error('Network response was not ok');
        }
        const result = await response.json();
        setData(result);
      } catch (error) {
        setError(error);
      } finally {
        setLoading(false);
      }
    };

    fetchData();
  }, []);

  if (loading) return <div className="flex justify-center items-center h-screen">Loading...</div>;
  if (error) return <div className="flex justify-center items-center h-screen">Error: {error.message}</div>;

  return (
    <div className="App">
      <header className="bg-blue-600 text-white p-4">
        <h1 className="text-2xl font-bold">Dynamic Data Scraper</h1>
      </header>
      <main className="p-4">
        <section className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
          {data.map((item, index) => (
            <div key={index} className="bg-white shadow-lg rounded-lg p-4">
              <h2 className="text-xl font-semibold">{item.title}</h2>
              <p className="text-gray-700">{item.description}</p>
              <img src={item.image} alt={item.title} className="w-full h-48 object-cover mt-4" />
            </div>
          ))}
        </section>
      </main>
      <footer className="bg-gray-800 text-white p-4 mt-8">
        <p className="text-center">© 2025 Dynamic Data Scraper. All rights reserved.</p>
      </footer>
    </div>
  );
};

export default App;

Plus de Recommandations

Voir Tout