W tym przewodniku zbadamy, dlaczego używanie frontendowego JavaScriptu może nie być optymalnym wyborem do skrobania stron internetowych i zapewnimy samouczek krok po kroku dotyczący tworzenia od podstaw skrobaka sieciowego w Node.js.
Skrobanie sieci Web za pomocą interfejsu JavaScript
Frontend JavaScript ma ograniczenia, jeśli chodzi o scrapowanie stron internetowych. Po pierwsze, musisz uruchomić skrypt JavaScript do skrobania sieci bezpośrednio z konsoli przeglądarki, czego nie można łatwo zautomatyzować programowo.
Po drugie, jeśli zamierzasz pobierać dane z różnych stron internetowych, zazwyczaj musisz je pobrać za pomocą żądań AJAX. Należy jednak pamiętać, że przeglądarki internetowe wymuszają politykę tego samego pochodzenia dla żądań AJAX. Oznacza to, że dzięki frontendowemu JavaScriptowi możesz uzyskać dostęp tylko do stron internetowych tego samego pochodzenia.
Aby zilustrować to ograniczenie, rozważmy prosty przykład. Załóżmy, że aktualnie odwiedzasz stronę internetową w witrynie fineproxy.com. W tym scenariuszu skrypt skrobania sieci Web JavaScript będzie w stanie pobierać tylko strony internetowe w domenie fineproxy.com.
Należy jednak pamiętać, że nie oznacza to, że JavaScript nie nadaje się do przeszukiwania sieci. Tak naprawdę Node.js umożliwia uruchamianie JavaScript na serwerach, skutecznie omijając powyższe ograniczenia.
Przyjrzyjmy się teraz, jak utworzyć skrobak WWW JavaScript przy użyciu Node.js.
Wymagania wstępne
Zanim zaczniesz tworzyć aplikację do skrobania sieci w Node.js, musisz upewnić się, że spełnione są następujące wymagania wstępne:
- Node.js 18+ z npm 8+: Możesz używać dowolnej wersji LTS (Long Term Support) Node.js 18+ wraz z npm. Dla porównania ten samouczek jest oparty na Node.js 18,12 i npm 8,19, co reprezentuje najnowszą wersję Node.js LTS dostępną w momencie pisania tego tekstu.
- Zintegrowane środowisko programistyczne (IDE) obsługujące JavaScript: Chociaż w tym samouczku jako wybrane IDE zastosowano wersję Community Edition IntelliJ IDEA, można użyć dowolnego innego IDE, które zapewnia obsługę JavaScript i Node.js.
Spełniając te wymagania wstępne, będziesz dobrze przygotowany do stworzenia własnego skrobaka sieciowego przy użyciu JavaScript i Node.js.
Najlepsze biblioteki do skrobania stron internetowych JavaScript dla Node.js
Przyjrzyjmy się niektórym z najlepszych bibliotek JavaScript przeznaczonych do przeglądania stron internetowych w środowisku Node.js:
- Axios: Axios to przyjazna dla użytkownika biblioteka, która upraszcza tworzenie żądań HTTP w JavaScript. Jest wszechstronny, może działać zarówno w przeglądarce, jak i środowisku Node.js i jest jednym z najczęściej używanych klientów HTTP JavaScript.
- Cheerio: Cheerio to lekka biblioteka oferująca interfejs API podobny do jQuery do nawigacji w dokumentach HTML i XML. Dzięki Cheerio możesz analizować dokumenty HTML, wybierać określone elementy HTML i wydobywać z nich dane. Zasadniczo Cheerio zapewnia potężny interfejs API do skrobania sieci.
- Selenium: Selenium to obszerna biblioteka obsługująca wiele języków programowania i używana głównie do automatyzacji testowania aplikacji internetowych. Oferuje także możliwości przeglądarki bezobsługowej, co czyni go cennym narzędziem do zadań związanych z przeglądaniem stron internetowych.
- Playwright: opracowany przez firmę Microsoft, Playwright służy jako wszechstronne narzędzie do tworzenia automatycznych skryptów testowych dla aplikacji internetowych. Umożliwia polecenie przeglądarce wykonania określonych działań, co czyni go odpowiednim wyborem do przeglądania stron internetowych, szczególnie w trybie przeglądarki bezgłowej.
- Puppeteer: Puppeteer, narzędzie firmy Google, specjalizuje się w automatyzacji testowania aplikacji internetowych. Zbudowany na protokole Chrome DevTools, Puppeteer umożliwia programową interakcję z przeglądarką, naśladując działania użytkownika. Aby uzyskać więcej informacji na temat różnic między Selenium i Puppeteer, zapoznaj się z naszym obszernym przewodnikiem.
Budowa skrobaka WWW JavaScript w Node.js
W tej sekcji zdobędziesz praktyczne doświadczenie w konstruowaniu skrobaka WWW JavaScript w środowisku Node.js. Misją skrobaka będzie autonomiczne wyodrębnianie danych ze strony głównej Fineproxy. W tym samouczku dotyczącym skrobania sieci WWW w Node.js dowiesz się, jak kierować określone elementy HTML na stronie internetowej, wyodrębniać z nich odpowiednie dane i przekształcać zeskrobane dane w bardziej uporządkowany i użyteczny format.
Jak skrobać dane za pomocą Node.js: przewodnik krok po kroku z przykładami
Krok 1: Skonfiguruj środowisko Node.js
Zanim zaczniesz skrobać, musisz skonfigurować środowisko Node.js. Oto jak możesz to zrobić:
Przykład:
# Install Node.js (if not already installed) $ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - $ sudo apt-get install -y nodejs # Check Node.js and npm versions $ node -v $ npm -v
Krok 2: Utwórz nowy projekt Node.js
Będziesz chciał utworzyć nowy projekt Node.js dla swojego zadania skrobania. Pomaga to w łatwym zarządzaniu zależnościami.
Przykład:
# Create a new directory for your project $ mkdir web-scraper $ cd web-scraper # Initialize a new Node.js project $ npm init -y
Krok 3: Zainstaluj niezbędne pakiety
Aby skutecznie zeskrobywać dane, będziesz potrzebować kilku niezbędnych pakietów. Zainstalujemy Axios do wysyłania żądań HTTP i Cheerio do analizowania HTML.
Przykład:
# Install Axios and Cheerio $ npm install axios cheerio
Krok 4: Wysyłaj żądania HTTP za pomocą Axios
Axios to potężna biblioteka do tworzenia żądań HTTP. Można go używać do pobierania stron internetowych.
Przykład:
const axios = require('axios'); // Make a GET request axios.get('https://example.com') .then((response) => { // Handle the response here }) .catch((error) => { // Handle errors });
Krok 5: Przeanalizuj HTML za pomocą Cheerio
Cheerio to świetna biblioteka do analizowania kodu HTML. Można go używać do zaznaczania i manipulowania elementami na stronie internetowej.
Przykład:
const cheerio = require('cheerio'); // Load HTML content const html = '<h1>Hello, World!</h1>'; const $ = cheerio.load(html); // Select and extract data const heading = $('h1').text(); console.log(heading); // Output: Hello, World!
Krok 6: Wybierz i wyodrębnij dane
Teraz, gdy potrafisz analizować kod HTML, możesz wybierać i wyodrębniać określone dane ze strony internetowej.
Przykład:
// Select and extract links const links = $('a'); links.each((index, element) => { const link = $(element).attr('href'); console.log(link); });
Krok 7: Zajmij się paginacją
Wiele stron internetowych zawiera treści podzielone na strony. Aby zeskrobać dane z wielu stron, musisz obsługiwać paginację.
Przykład:
// Scrape data from multiple pages async function scrapeMultiplePages() { for (let page = 1; page <= 5; page++) { const response = await axios.get(`https://example.com/page/${page}`); const $ = cheerio.load(response.data); // Extract data from the current page // (Example: scraping a list of articles) } }
Krok 8: Przechowywanie zdrapanych danych
Po zebraniu danych należy je przechowywać do wykorzystania w przyszłości. Możesz zapisać go do pliku, bazy danych lub chmury.
Przykład:
// Save scraped data to a JSON file const fs = require('fs'); const dataToSave = { /* your data here */ }; fs.writeFileSync('data.json', JSON.stringify(dataToSave));
Krok 9: Obsługa błędów i wyjątków
Skrobanie sieci nie zawsze jest wolne od błędów. Aby mieć pewność, że skrobak będzie działał płynnie, należy postępować z błędami z wdziękiem.
Przykład:
// Handle errors when making requests axios.get('https://example.com') .then((response) => { // Handle success }) .catch((error) => { console.error('Error:', error.message); });
Krok 10: Szanuj grzeczność i etykę
Bardzo ważne jest, aby być odpowiedzialnym skrobakiem i postępować zgodnie z wytycznymi etycznymi. Unikaj przeciążania witryn internetowych żądaniami i przestrzegaj ich warunków korzystania z usług.
Przykład:
// Set a delay between requests to be polite const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms)); async function politeScraping() { for (let page = 1; page <= 5; page++) { await axios.get(`https://example.com/page/${page}`); await delay(1000); // Delay for 1 second between requests } }
Krok 11: Uruchom skrobak sieciowy
Wreszcie nadszedł czas, aby uruchomić skrobak sieciowy i monitorować jego postęp.
Przykład:
# Run your Node.js script $ node scraper.js
W tym samouczku zbadaliśmy ograniczenia web scrapingu w interfejsie użytkownika przy użyciu JavaScript i omówiliśmy, dlaczego Node.js wydaje się lepszym wyborem. Dodatkowo zagłębiliśmy się w podstawowe komponenty wymagane do stworzenia skryptu do skrobania sieci w Node.js i sprawdziliśmy proces ekstrakcji danych z sieci za pomocą JavaScript. W szczególności zdobyłeś wiedzę na temat wykorzystania mocy Cheerio i Axios do stworzenia aplikacji do przeglądania stron internetowych opartej na JavaScript w Node.js, a wszystko to zilustrowano na przykładach ze świata rzeczywistego. Jak byłeś świadkiem, skrobanie sieci za pomocą Node.js można osiągnąć z niezwykłą wydajnością, często wymagając zaledwie kilku linijek kodu.
Należy jednak pamiętać, że skrobanie sieci nie zawsze jest prostym przedsięwzięciem. Złożoność ta wynika z niezliczonych wyzwań, które często się pojawiają. W szczególności coraz większym problemem jest rozprzestrzenianie się środków zapobiegających skrobaniu i botom. Na szczęście istnieje sposób na łatwe pokonanie tych przeszkód: wykorzystanie najnowocześniejszego, zaawansowanego narzędzia do skrobania sieci oferowanego przez Fineproxy.
Czy NodeJS jest dobry do skrobania stron internetowych?
Tak, NodeJS jest popularnym wyborem do skrobania stron internetowych ze względu na jego asynchroniczny charakter, pozwalający na wydajne i jednoczesne skrobanie. Możesz używać bibliotek takich jak Cheerio lub Puppeteer do analizowania i wyodrębniania danych ze stron internetowych za pomocą NodeJS.
Czy mogę skrobać strony internetowe za pomocą JavaScript?
Tak, możesz skrobać strony internetowe za pomocą JavaScript.
Czy NodeJS współpracuje z JavaScriptem?
Tak, Node.js współpracuje z JavaScriptem.
Jaki jest najlepszy skrobak sieciowy dla JavaScript?
Puppeteer jest powszechnie uważany za jedno z najlepszych narzędzi do przeglądania stron internetowych dla JavaScript.
Komentarze (0)
Nie ma tu jeszcze żadnych komentarzy, możesz być pierwszy!