Rumah > pembangunan bahagian belakang > Tutorial Python > Cara Mengikis Ulasan Target.com dengan Python

Cara Mengikis Ulasan Target.com dengan Python

DDD
Lepaskan: 2025-01-06 06:41:41
asal
509 orang telah melayarinya

pengenalan

Target.com ialah salah satu pasaran e-dagang dan beli-belah terbesar di Amerika. Ia membolehkan pengguna membeli-belah dalam talian dan dalam kedai untuk segala-galanya daripada barangan runcit dan keperluan kepada pakaian dan elektronik. Mulai September 2024, menurut data daripada SimilarWeb, Target.com menarik trafik web bulanan lebih daripada 166 juta.

Tapak web Target.com menawarkan ulasan pelanggan, maklumat harga dinamik, perbandingan produk dan penilaian produk, antara lain. Ia merupakan sumber data yang berharga untuk penganalisis, pasukan pemasaran, perniagaan atau penyelidik yang ingin menjejaki arah aliran produk, memantau harga pesaing atau menganalisis sentimen pelanggan melalui ulasan.

How to Scrape Target.com Reviews with Python

Dalam artikel ini, anda akan belajar cara:

  • Sediakan dan pasang Python, Selenium dan Sup Cantik untuk mengikis web
  • Scrape ulasan dan penilaian produk daripada Target.com menggunakan Python
  • Gunakan ScraperAPI untuk memintas mekanisme anti-mengikis Target.com dengan berkesan
  • Laksanakan proksi untuk mengelakkan larangan IP dan meningkatkan prestasi mengikis

Menjelang akhir artikel ini, anda akan belajar cara mengumpulkan ulasan dan penilaian produk daripada Target.com menggunakan Python, Selenium dan ScraperAPI tanpa disekat. Anda juga akan belajar cara menggunakan data anda yang dikikis untuk analisis sentimen.

Jika anda teruja semasa saya menulis tutorial ini, mari selami terus. ?

TL;DR: Mengikis Ulasan Produk Sasaran [Kod Penuh]

Bagi mereka yang tergesa-gesa, berikut ialah coretan kod lengkap yang akan kami bina berdasarkan tutorial ini:

import os
import time

from bs4 import BeautifulSoup
from dotenv import load_dotenv
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Load environment variables
load_dotenv()


def target_com_scraper():
    """
    SCRAPER SETTINGS

    - API_KEY: Your ScraperAPI key. Get your API Key ==> https://www.scraperapi.com/?fp_ref=eunit
    """

    API_KEY = os.getenv("API_KEY", "yourapikey")

    # ScraperAPI proxy settings (with HTTP and HTTPS variants)
    scraper_api_proxies = {
        'proxy': {
            'http': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'https': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    # URLs to scrape
    url_list = [
        "https://www.target.com/p/enclosed-cat-litter-box-xl-up-up/-/A-90310047?preselect=87059440#lnk=sametab",
    ]

    # Store scraped data
    scraped_data = []

    # Setup Selenium options with proxy
    options = Options()
    # options.add_argument("--headless")  # Uncomment for headless mode
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-in-process-stack-traces")
    options.add_argument("--window-size=1920,1080")
    options.add_argument("--log-level=3")
    options.add_argument("--disable-logging")
    options.add_argument("--start-maximized")

    # Initialize Selenium WebDriver
    driver = webdriver.Chrome(service=ChromeService(
        ChromeDriverManager().install()), options=options, seleniumwire_options=scraper_api_proxies)

    def scroll_down_page(distance=100, delay=0.2):
        """
        Scroll down the page gradually until the end.

        Args:
        - distance: Number of pixels to scroll by in each step.
        - delay: Time (in seconds) to wait between scrolls.
        """
        total_height = driver.execute_script(
            "return document.body.scrollHeight")
        scrolled_height = 0

        while scrolled_height < total_height:
            # Scroll down by 'distance' pixels
            driver.execute_script(f"window.scrollBy(0, {distance});")
            scrolled_height += distance
            time.sleep(delay)  # Pause between scrolls

            # Update the total page height after scrolling
            total_height = driver.execute_script(
                "return document.body.scrollHeight")

        print("Finished scrolling.")

    try:
        for url in url_list:

            # Use Selenium to load the page
            driver.get(url)
            time.sleep(5)  # Give the page time to load

            # Scroll down the page
            scroll_down_page()

            # Extract single elements with Selenium
            def extract_element_text(selector, description):
                try:
                    # Wait for the element and extract text
                    element = WebDriverWait(driver, 5).until(
                        EC.visibility_of_element_located(
                            (By.CSS_SELECTOR, selector))
                    )
                    text = element.text.strip()
                    return text if text else None  # Return None if the text is empty
                except TimeoutException:
                    print(f"Timeout: Could not find {description}. Setting to None.")
                    return None
                except NoSuchElementException:
                    print(f"Element not found: {description}. Setting to None.")
                    return None

            # Extract single elements
            reviews_data = {}

            reviews_data["secondary_rating"] = extract_element_text("div[data-test='secondary-rating']",
                                                                    "secondary_rating")
            reviews_data["rating_count"] = extract_element_text(
                "div[data-test='rating-count']", "rating_count")
            reviews_data["rating_histogram"] = extract_element_text("div[data-test='rating-histogram']",
                                                                    "rating_histogram")
            reviews_data["percent_recommended"] = extract_element_text("div[data-test='percent-recommended']",
                                                                       "percent_recommended")
            reviews_data["total_recommendations"] = extract_element_text("div[data-test='total-recommendations']",
                                                                         "total_recommendations")

            # Extract reviews from 'reviews-list'
            scraped_reviews = []

            # Use Beautiful Soup to extract other content
            soup = BeautifulSoup(driver.page_source, 'html.parser')

            # Select all reviews in the list using BeautifulSoup
            reviews_list = soup.select("div[data-test='reviews-list'] > div")

            for review in reviews_list:
                # Create a dictionary to store each review's data
                ratings = {}

                # Extract title
                title_element = review.select_one(
                    "h4[data-test='review-card--title']")
                ratings['title'] = title_element.text.strip(
                ) if title_element else None

                # Extract rating
                rating_element = review.select_one("span[data-test='ratings']")
                ratings['rating'] = rating_element.text.strip(
                ) if rating_element else None

                # Extract time
                time_element = review.select_one(
                    "span[data-test='review-card--reviewTime']")
                ratings['time'] = time_element.text.strip(
                ) if time_element else None

                # Extract review text
                text_element = review.select_one(
                    "div[data-test='review-card--text']")
                ratings['text'] = text_element.text.strip(
                ) if text_element else None

                # Append each review to the list of reviews
                scraped_reviews.append(ratings)

            # Append the list of reviews to the main product data
            reviews_data["reviews"] = scraped_reviews

            # Append the overall data to the scraped_data list
            scraped_data.append(reviews_data)

        # Output the scraped data
        print(f"Scraped data: {scraped_data}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        # Ensure driver quits after scraping
        driver.quit()


if __name__ == "__main__":
    target_com_scraper()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Lihat kod lengkap di GitHub: https://github.com/Eunit99/target_com_scraper. Ingin memahami setiap baris kod? Mari kita bina pengikis web dari awal bersama-sama!

Cara Mengikis Ulasan Target.com dengan Python dan ScraperAPI

Dalam artikel terdahulu, kami membincangkan semua yang anda perlu ketahui untuk mengikis data produk Target.com. Walau bagaimanapun, dalam artikel ini, saya akan menumpukan pada memandu anda melalui cara mengikis Target.com untuk penilaian dan ulasan produk dengan Python dan ScraperAPI.

Prasyarat

Untuk mengikuti tutorial ini dan mula mengikis Target.com, anda perlu melakukan beberapa perkara dahulu.

1. Mempunyai Akaun dengan ScraperAPI

Mulakan dengan akaun percuma di ScraperAPI. ScraperAPI membolehkan anda mula mengumpul data daripada berjuta-juta sumber web tanpa penyelesaian yang rumit dan mahal dengan API kami yang mudah digunakan untuk mengikis web.

ScraperAPI membuka kunci walaupun tapak yang paling sukar, mengurangkan kos infrastruktur dan pembangunan, membolehkan anda menggunakan pengikis web dengan lebih pantas, dan juga memberi anda 1,000 kredit API percuma untuk mencuba sesuatu dahulu dan banyak lagi.

2. Editor Teks atau IDE

Gunakan editor kod seperti Visual Studio Code. Pilihan lain termasuk Teks Sublime atau PyCharm.

3. Keperluan Projek dan Persediaan Persekitaran Maya

Sebelum bermula dengan mengikis ulasan Target.com, pastikan anda mempunyai perkara berikut:

  • Python dipasang pada mesin anda (versi 3.10 atau lebih baharu)
  • pip (pemasang pakej Python)

Adalah amalan terbaik untuk menggunakan persekitaran maya untuk projek Python untuk mengurus kebergantungan dan mengelakkan konflik.

Untuk mencipta persekitaran maya, jalankan arahan ini dalam terminal anda:

import os
import time

from bs4 import BeautifulSoup
from dotenv import load_dotenv
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Load environment variables
load_dotenv()


def target_com_scraper():
    """
    SCRAPER SETTINGS

    - API_KEY: Your ScraperAPI key. Get your API Key ==> https://www.scraperapi.com/?fp_ref=eunit
    """

    API_KEY = os.getenv("API_KEY", "yourapikey")

    # ScraperAPI proxy settings (with HTTP and HTTPS variants)
    scraper_api_proxies = {
        'proxy': {
            'http': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'https': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    # URLs to scrape
    url_list = [
        "https://www.target.com/p/enclosed-cat-litter-box-xl-up-up/-/A-90310047?preselect=87059440#lnk=sametab",
    ]

    # Store scraped data
    scraped_data = []

    # Setup Selenium options with proxy
    options = Options()
    # options.add_argument("--headless")  # Uncomment for headless mode
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-in-process-stack-traces")
    options.add_argument("--window-size=1920,1080")
    options.add_argument("--log-level=3")
    options.add_argument("--disable-logging")
    options.add_argument("--start-maximized")

    # Initialize Selenium WebDriver
    driver = webdriver.Chrome(service=ChromeService(
        ChromeDriverManager().install()), options=options, seleniumwire_options=scraper_api_proxies)

    def scroll_down_page(distance=100, delay=0.2):
        """
        Scroll down the page gradually until the end.

        Args:
        - distance: Number of pixels to scroll by in each step.
        - delay: Time (in seconds) to wait between scrolls.
        """
        total_height = driver.execute_script(
            "return document.body.scrollHeight")
        scrolled_height = 0

        while scrolled_height < total_height:
            # Scroll down by 'distance' pixels
            driver.execute_script(f"window.scrollBy(0, {distance});")
            scrolled_height += distance
            time.sleep(delay)  # Pause between scrolls

            # Update the total page height after scrolling
            total_height = driver.execute_script(
                "return document.body.scrollHeight")

        print("Finished scrolling.")

    try:
        for url in url_list:

            # Use Selenium to load the page
            driver.get(url)
            time.sleep(5)  # Give the page time to load

            # Scroll down the page
            scroll_down_page()

            # Extract single elements with Selenium
            def extract_element_text(selector, description):
                try:
                    # Wait for the element and extract text
                    element = WebDriverWait(driver, 5).until(
                        EC.visibility_of_element_located(
                            (By.CSS_SELECTOR, selector))
                    )
                    text = element.text.strip()
                    return text if text else None  # Return None if the text is empty
                except TimeoutException:
                    print(f"Timeout: Could not find {description}. Setting to None.")
                    return None
                except NoSuchElementException:
                    print(f"Element not found: {description}. Setting to None.")
                    return None

            # Extract single elements
            reviews_data = {}

            reviews_data["secondary_rating"] = extract_element_text("div[data-test='secondary-rating']",
                                                                    "secondary_rating")
            reviews_data["rating_count"] = extract_element_text(
                "div[data-test='rating-count']", "rating_count")
            reviews_data["rating_histogram"] = extract_element_text("div[data-test='rating-histogram']",
                                                                    "rating_histogram")
            reviews_data["percent_recommended"] = extract_element_text("div[data-test='percent-recommended']",
                                                                       "percent_recommended")
            reviews_data["total_recommendations"] = extract_element_text("div[data-test='total-recommendations']",
                                                                         "total_recommendations")

            # Extract reviews from 'reviews-list'
            scraped_reviews = []

            # Use Beautiful Soup to extract other content
            soup = BeautifulSoup(driver.page_source, 'html.parser')

            # Select all reviews in the list using BeautifulSoup
            reviews_list = soup.select("div[data-test='reviews-list'] > div")

            for review in reviews_list:
                # Create a dictionary to store each review's data
                ratings = {}

                # Extract title
                title_element = review.select_one(
                    "h4[data-test='review-card--title']")
                ratings['title'] = title_element.text.strip(
                ) if title_element else None

                # Extract rating
                rating_element = review.select_one("span[data-test='ratings']")
                ratings['rating'] = rating_element.text.strip(
                ) if rating_element else None

                # Extract time
                time_element = review.select_one(
                    "span[data-test='review-card--reviewTime']")
                ratings['time'] = time_element.text.strip(
                ) if time_element else None

                # Extract review text
                text_element = review.select_one(
                    "div[data-test='review-card--text']")
                ratings['text'] = text_element.text.strip(
                ) if text_element else None

                # Append each review to the list of reviews
                scraped_reviews.append(ratings)

            # Append the list of reviews to the main product data
            reviews_data["reviews"] = scraped_reviews

            # Append the overall data to the scraped_data list
            scraped_data.append(reviews_data)

        # Output the scraped data
        print(f"Scraped data: {scraped_data}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        # Ensure driver quits after scraping
        driver.quit()


if __name__ == "__main__":
    target_com_scraper()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

4. Mengaktifkan Persekitaran Maya

Aktifkan persekitaran maya berdasarkan sistem pengendalian anda:

python3 -m venv env
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sesetengah IDE boleh mengaktifkan persekitaran maya secara automatik.

5. Mempunyai pemahaman asas tentang pemilih CSS dan Navigasi Browser DevTools

Untuk mengikuti artikel ini dengan berkesan, anda perlu mempunyai pemahaman asas tentang pemilih CSS. Pemilih CSS digunakan untuk menyasarkan elemen HTML tertentu pada halaman web, yang membolehkan anda mengekstrak maklumat yang anda perlukan.

Selain itu, selesa dengan penyemak imbas DevTools adalah penting untuk memeriksa dan mengenal pasti struktur halaman web.

Persediaan Projek

Setelah memenuhi prasyarat di atas, tiba masanya untuk menyediakan projek anda. Mulakan dengan mencipta folder yang akan mengandungi kod sumber pengikis Target.com. Dalam kes ini, saya akan menamakan folder python-target-dot-com-scraper saya.

Jalankan arahan berikut untuk mencipta folder bernama python-target-dot-com-scraper:

# On Unix or MacOS (bash shell):
/path/to/venv/bin/activate

# On Unix or MacOS (csh shell):
/path/to/venv/bin/activate.csh

# On Unix or MacOS (fish shell):
/path/to/venv/bin/activate.fish

# On Windows (command prompt):
\path\to\venv\Scripts\activate.bat

# On Windows (PowerShell):
\path\to\venv\Scripts\Activate.ps1
Salin selepas log masuk
Salin selepas log masuk

Masukkan folder dan buat fail Python main.py baharu dengan menjalankan arahan ini:

mkdir python-target-dot-com-scraper
Salin selepas log masuk

Buat fail requirements.txt dengan menjalankan arahan berikut:

cd python-target-dot-com-scraper && touch main.py
Salin selepas log masuk

Untuk artikel ini, saya akan menggunakan Selenium dan Sup Cantik, dan Pengurus Webdriver untuk perpustakaan Python untuk membina pengikis web. Selenium akan mengendalikan automasi penyemak imbas, dan perpustakaan Beautiful Soup akan mengekstrak data daripada kandungan HTML tapak web Target.com. Pada masa yang sama, Pengurus Webdriver untuk Python menyediakan cara untuk mengurus pemacu untuk penyemak imbas yang berbeza secara automatik.

Tambah baris berikut pada fail requirements.txt anda untuk menentukan pakej yang diperlukan:

touch requirements.txt
Salin selepas log masuk

Untuk memasang pakej, jalankan arahan berikut:

selenium~=4.25.0
bs4~=0.0.2
python-dotenv~=1.0.1
webdriver_manager
selenium-wire
blinker==1.7.0
python-dotenv==1.0.1
Salin selepas log masuk

Ekstrak Ulasan Produk Target.com dengan Selenium

Dalam bahagian ini, saya akan membimbing anda melalui panduan langkah demi langkah untuk mendapatkan penilaian dan ulasan produk daripada halaman produk seperti ini daripada Target.com.

How to Scrape Target.com Reviews with Python

Saya akan menumpukan pada ulasan dan penilaian daripada bahagian tapak web ini yang diserlahkan dalam tangkapan skrin ini di bawah:

How to Scrape Target.com Reviews with Python

Sebelum mendalami lebih lanjut, anda perlu memahami struktur HTML dan mengenal pasti pemilih DOM yang dikaitkan dengan tag HTML yang membungkus maklumat yang ingin kami ekstrak. Dalam bahagian seterusnya ini, saya akan membimbing anda menggunakan Chrome DevTools untuk memahami struktur tapak Target.com.

Menggunakan Chrome DevTools untuk Memahami Struktur Tapak Target.com

Buka Chrome DevTools dengan menekan F12 atau mengklik kanan di mana-mana pada halaman dan memilih Inspect. Memeriksa halaman daripada URL di atas mendedahkan perkara berikut:

How to Scrape Target.com Reviews with Python

How to Scrape Target.com Reviews with Python

Daripada gambar di atas, berikut adalah semua pemilih DOM yang akan disasarkan oleh pengikis web untuk mengekstrak maklumat:

Information DOM selector Value
Product ratings
Rating value div[data-test='rating-value'] 4.7
Rating count div[data-test='rating-count'] 683 star ratings
Secondary rating div[data-test='secondary-rating'] 683 star ratings
Rating histogram div[data-test='rating-histogram'] 5 stars 85%4 stars 8%3 stars 3%2 stars 1%1 star 2%
Percent recommended div[data-test='percent-recommended'] 89% would recommend
Total recommendations div[data-test='total-recommendations'] 125 recommendations
Product reviews
Reviews list div[data-test='reviews-list'] Returns children elements corresponding to individual product review
Review card title h4[data-test='review-card--title'] Perfect litter box for cats
Ratings span[data-test='ratings'] 4.7 out of 5 stars with 683 reviews
Review time span[data-test='review-card--reviewTime'] 23 days ago
Review card text div[data-test='review-card--text'] My cats love it. Doesn't take up much space either

Membina Pengikis Ulasan Sasaran Anda

Sekarang kami telah menggariskan semua keperluan dan telah menemui elemen berbeza yang kami minati di halaman semakan produk Target.com. Kami akan beralih ke langkah seterusnya yang memerlukan pengimportan modul yang diperlukan:

1. Mengimport Selenium dan Modul Lain

import os
import time

from bs4 import BeautifulSoup
from dotenv import load_dotenv
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Load environment variables
load_dotenv()


def target_com_scraper():
    """
    SCRAPER SETTINGS

    - API_KEY: Your ScraperAPI key. Get your API Key ==> https://www.scraperapi.com/?fp_ref=eunit
    """

    API_KEY = os.getenv("API_KEY", "yourapikey")

    # ScraperAPI proxy settings (with HTTP and HTTPS variants)
    scraper_api_proxies = {
        'proxy': {
            'http': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'https': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    # URLs to scrape
    url_list = [
        "https://www.target.com/p/enclosed-cat-litter-box-xl-up-up/-/A-90310047?preselect=87059440#lnk=sametab",
    ]

    # Store scraped data
    scraped_data = []

    # Setup Selenium options with proxy
    options = Options()
    # options.add_argument("--headless")  # Uncomment for headless mode
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-in-process-stack-traces")
    options.add_argument("--window-size=1920,1080")
    options.add_argument("--log-level=3")
    options.add_argument("--disable-logging")
    options.add_argument("--start-maximized")

    # Initialize Selenium WebDriver
    driver = webdriver.Chrome(service=ChromeService(
        ChromeDriverManager().install()), options=options, seleniumwire_options=scraper_api_proxies)

    def scroll_down_page(distance=100, delay=0.2):
        """
        Scroll down the page gradually until the end.

        Args:
        - distance: Number of pixels to scroll by in each step.
        - delay: Time (in seconds) to wait between scrolls.
        """
        total_height = driver.execute_script(
            "return document.body.scrollHeight")
        scrolled_height = 0

        while scrolled_height < total_height:
            # Scroll down by 'distance' pixels
            driver.execute_script(f"window.scrollBy(0, {distance});")
            scrolled_height += distance
            time.sleep(delay)  # Pause between scrolls

            # Update the total page height after scrolling
            total_height = driver.execute_script(
                "return document.body.scrollHeight")

        print("Finished scrolling.")

    try:
        for url in url_list:

            # Use Selenium to load the page
            driver.get(url)
            time.sleep(5)  # Give the page time to load

            # Scroll down the page
            scroll_down_page()

            # Extract single elements with Selenium
            def extract_element_text(selector, description):
                try:
                    # Wait for the element and extract text
                    element = WebDriverWait(driver, 5).until(
                        EC.visibility_of_element_located(
                            (By.CSS_SELECTOR, selector))
                    )
                    text = element.text.strip()
                    return text if text else None  # Return None if the text is empty
                except TimeoutException:
                    print(f"Timeout: Could not find {description}. Setting to None.")
                    return None
                except NoSuchElementException:
                    print(f"Element not found: {description}. Setting to None.")
                    return None

            # Extract single elements
            reviews_data = {}

            reviews_data["secondary_rating"] = extract_element_text("div[data-test='secondary-rating']",
                                                                    "secondary_rating")
            reviews_data["rating_count"] = extract_element_text(
                "div[data-test='rating-count']", "rating_count")
            reviews_data["rating_histogram"] = extract_element_text("div[data-test='rating-histogram']",
                                                                    "rating_histogram")
            reviews_data["percent_recommended"] = extract_element_text("div[data-test='percent-recommended']",
                                                                       "percent_recommended")
            reviews_data["total_recommendations"] = extract_element_text("div[data-test='total-recommendations']",
                                                                         "total_recommendations")

            # Extract reviews from 'reviews-list'
            scraped_reviews = []

            # Use Beautiful Soup to extract other content
            soup = BeautifulSoup(driver.page_source, 'html.parser')

            # Select all reviews in the list using BeautifulSoup
            reviews_list = soup.select("div[data-test='reviews-list'] > div")

            for review in reviews_list:
                # Create a dictionary to store each review's data
                ratings = {}

                # Extract title
                title_element = review.select_one(
                    "h4[data-test='review-card--title']")
                ratings['title'] = title_element.text.strip(
                ) if title_element else None

                # Extract rating
                rating_element = review.select_one("span[data-test='ratings']")
                ratings['rating'] = rating_element.text.strip(
                ) if rating_element else None

                # Extract time
                time_element = review.select_one(
                    "span[data-test='review-card--reviewTime']")
                ratings['time'] = time_element.text.strip(
                ) if time_element else None

                # Extract review text
                text_element = review.select_one(
                    "div[data-test='review-card--text']")
                ratings['text'] = text_element.text.strip(
                ) if text_element else None

                # Append each review to the list of reviews
                scraped_reviews.append(ratings)

            # Append the list of reviews to the main product data
            reviews_data["reviews"] = scraped_reviews

            # Append the overall data to the scraped_data list
            scraped_data.append(reviews_data)

        # Output the scraped data
        print(f"Scraped data: {scraped_data}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        # Ensure driver quits after scraping
        driver.quit()


if __name__ == "__main__":
    target_com_scraper()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam kod ini, setiap modul mempunyai tujuan khusus untuk membina pengikis web kami:

  • os mengendalikan pembolehubah persekitaran seperti kunci API.
  • masa memperkenalkan kelewatan semasa memuatkan halaman.
  • dotenv memuatkan kunci API daripada fail .env.
  • selenium membolehkan automasi dan interaksi penyemak imbas.
  • webdriver_manager memasang ChromeDriver secara automatik.
  • BeautifulSoup menghuraikan HTML untuk pengekstrakan data.
  • seleniumwire menguruskan proksi untuk mengikis tanpa larangan IP.

2. Menyediakan Pemacu Web

Dalam langkah ini, anda akan memulakan Pemacu Web Chrome Selenium dan mengkonfigurasi pilihan penyemak imbas yang penting. Pilihan ini termasuk melumpuhkan ciri yang tidak diperlukan untuk meningkatkan prestasi, menetapkan saiz tetingkap dan mengurus log. Anda akan membuat instantiate WebDriver menggunakan webdriver.Chrome() untuk mengawal penyemak imbas sepanjang proses mengikis.

python3 -m venv env
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Buat Fungsi Tatal ke bawah

Dalam bahagian ini, kami mencipta fungsi untuk menatal seluruh halaman. Tapak web Target.com memuatkan kandungan tambahan (seperti ulasan) secara dinamik apabila pengguna menatal ke bawah.

# On Unix or MacOS (bash shell):
/path/to/venv/bin/activate

# On Unix or MacOS (csh shell):
/path/to/venv/bin/activate.csh

# On Unix or MacOS (fish shell):
/path/to/venv/bin/activate.fish

# On Windows (command prompt):
\path\to\venv\Scripts\activate.bat

# On Windows (PowerShell):
\path\to\venv\Scripts\Activate.ps1
Salin selepas log masuk
Salin selepas log masuk

Fungsi scroll_down_page() menatal halaman web secara beransur-ansur mengikut bilangan piksel (jarak) yang ditetapkan dengan jeda singkat (kelewatan) antara setiap skrol. Ia mula-mula mengira jumlah ketinggian halaman dan tatal ke bawah sehingga mencapai bahagian bawah. Semasa ia menatal, jumlah ketinggian halaman dikemas kini secara dinamik untuk menampung kandungan baharu yang mungkin dimuatkan semasa proses.

Menggabungkan Selenium dengan BeautifulSoup

Dalam bahagian ini, kami menggabungkan kekuatan Selenium dan BeautifulSoup untuk mencipta persediaan mengikis web yang cekap dan boleh dipercayai. Walaupun Selenium digunakan untuk berinteraksi dengan kandungan dinamik seperti memuatkan halaman dan mengendalikan elemen yang diberikan JavaScript, BeautifulSoup lebih berkesan untuk menghuraikan dan mengekstrak elemen HTML statik. Kami mula-mula menggunakan Selenium untuk menavigasi halaman web dan menunggu elemen tertentu, seperti penilaian produk dan kiraan ulasan, dimuatkan. Elemen ini diekstrak dengan fungsi WebDriverWait Selenium, yang memastikan data kelihatan sebelum menangkapnya. Walau bagaimanapun, pengendalian ulasan individu melalui Selenium sahaja boleh menjadi rumit dan tidak cekap.

Menggunakan BeautifulSoup, kami memudahkan proses penggulungan melalui berbilang ulasan pada halaman. Setelah Selenium memuatkan halaman sepenuhnya, BeautifulSoup menghuraikan kandungan HTML untuk mengekstrak ulasan dengan cekap. Menggunakan kaedah select() dan select_one() BeautifulSoup, kami boleh menavigasi struktur halaman dan mengumpulkan tajuk, penilaian, masa dan teks untuk setiap ulasan. Pendekatan ini membolehkan pengikisan elemen berulang yang lebih bersih dan lebih berstruktur (seperti senarai ulasan) dan menawarkan fleksibiliti yang lebih besar dalam mengendalikan HTML, berbanding mengurus segala-galanya melalui Selenium sahaja.

import os
import time

from bs4 import BeautifulSoup
from dotenv import load_dotenv
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Load environment variables
load_dotenv()


def target_com_scraper():
    """
    SCRAPER SETTINGS

    - API_KEY: Your ScraperAPI key. Get your API Key ==> https://www.scraperapi.com/?fp_ref=eunit
    """

    API_KEY = os.getenv("API_KEY", "yourapikey")

    # ScraperAPI proxy settings (with HTTP and HTTPS variants)
    scraper_api_proxies = {
        'proxy': {
            'http': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'https': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    # URLs to scrape
    url_list = [
        "https://www.target.com/p/enclosed-cat-litter-box-xl-up-up/-/A-90310047?preselect=87059440#lnk=sametab",
    ]

    # Store scraped data
    scraped_data = []

    # Setup Selenium options with proxy
    options = Options()
    # options.add_argument("--headless")  # Uncomment for headless mode
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-in-process-stack-traces")
    options.add_argument("--window-size=1920,1080")
    options.add_argument("--log-level=3")
    options.add_argument("--disable-logging")
    options.add_argument("--start-maximized")

    # Initialize Selenium WebDriver
    driver = webdriver.Chrome(service=ChromeService(
        ChromeDriverManager().install()), options=options, seleniumwire_options=scraper_api_proxies)

    def scroll_down_page(distance=100, delay=0.2):
        """
        Scroll down the page gradually until the end.

        Args:
        - distance: Number of pixels to scroll by in each step.
        - delay: Time (in seconds) to wait between scrolls.
        """
        total_height = driver.execute_script(
            "return document.body.scrollHeight")
        scrolled_height = 0

        while scrolled_height < total_height:
            # Scroll down by 'distance' pixels
            driver.execute_script(f"window.scrollBy(0, {distance});")
            scrolled_height += distance
            time.sleep(delay)  # Pause between scrolls

            # Update the total page height after scrolling
            total_height = driver.execute_script(
                "return document.body.scrollHeight")

        print("Finished scrolling.")

    try:
        for url in url_list:

            # Use Selenium to load the page
            driver.get(url)
            time.sleep(5)  # Give the page time to load

            # Scroll down the page
            scroll_down_page()

            # Extract single elements with Selenium
            def extract_element_text(selector, description):
                try:
                    # Wait for the element and extract text
                    element = WebDriverWait(driver, 5).until(
                        EC.visibility_of_element_located(
                            (By.CSS_SELECTOR, selector))
                    )
                    text = element.text.strip()
                    return text if text else None  # Return None if the text is empty
                except TimeoutException:
                    print(f"Timeout: Could not find {description}. Setting to None.")
                    return None
                except NoSuchElementException:
                    print(f"Element not found: {description}. Setting to None.")
                    return None

            # Extract single elements
            reviews_data = {}

            reviews_data["secondary_rating"] = extract_element_text("div[data-test='secondary-rating']",
                                                                    "secondary_rating")
            reviews_data["rating_count"] = extract_element_text(
                "div[data-test='rating-count']", "rating_count")
            reviews_data["rating_histogram"] = extract_element_text("div[data-test='rating-histogram']",
                                                                    "rating_histogram")
            reviews_data["percent_recommended"] = extract_element_text("div[data-test='percent-recommended']",
                                                                       "percent_recommended")
            reviews_data["total_recommendations"] = extract_element_text("div[data-test='total-recommendations']",
                                                                         "total_recommendations")

            # Extract reviews from 'reviews-list'
            scraped_reviews = []

            # Use Beautiful Soup to extract other content
            soup = BeautifulSoup(driver.page_source, 'html.parser')

            # Select all reviews in the list using BeautifulSoup
            reviews_list = soup.select("div[data-test='reviews-list'] > div")

            for review in reviews_list:
                # Create a dictionary to store each review's data
                ratings = {}

                # Extract title
                title_element = review.select_one(
                    "h4[data-test='review-card--title']")
                ratings['title'] = title_element.text.strip(
                ) if title_element else None

                # Extract rating
                rating_element = review.select_one("span[data-test='ratings']")
                ratings['rating'] = rating_element.text.strip(
                ) if rating_element else None

                # Extract time
                time_element = review.select_one(
                    "span[data-test='review-card--reviewTime']")
                ratings['time'] = time_element.text.strip(
                ) if time_element else None

                # Extract review text
                text_element = review.select_one(
                    "div[data-test='review-card--text']")
                ratings['text'] = text_element.text.strip(
                ) if text_element else None

                # Append each review to the list of reviews
                scraped_reviews.append(ratings)

            # Append the list of reviews to the main product data
            reviews_data["reviews"] = scraped_reviews

            # Append the overall data to the scraped_data list
            scraped_data.append(reviews_data)

        # Output the scraped data
        print(f"Scraped data: {scraped_data}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        # Ensure driver quits after scraping
        driver.quit()


if __name__ == "__main__":
    target_com_scraper()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan Proksi dalam Python Selenium: Interaksi Kompleks dengan Pelayar Tanpa Kepala

Apabila mengikis tapak web yang kompleks, terutamanya yang mempunyai langkah anti-bot yang teguh seperti Target.com, cabaran seperti larangan IP, had kadar atau sekatan akses sering timbul. Menggunakan Selenium untuk tugasan sedemikian menjadi rumit, terutamanya apabila menggunakan penyemak imbas tanpa kepala. Pelayar tanpa kepala membenarkan interaksi tanpa GUI, tetapi mengurus proksi secara manual dalam persekitaran ini menjadi mencabar. Anda perlu mengkonfigurasi tetapan proksi, memutar IP dan mengendalikan interaksi lain seperti pemaparan JavaScript, menjadikan pengikisan lebih perlahan dan terdedah kepada kegagalan.

Sebaliknya, ScraperAPI menyelaraskan proses ini dengan ketara dengan menguruskan proksi secara automatik. Daripada menangani konfigurasi manual dalam Selenium, mod proksi ScraperAPI mengedarkan permintaan merentasi berbilang alamat IP, memastikan pengikisan lebih lancar tanpa perlu risau tentang larangan IP, had kadar atau sekatan geografi. Ini menjadi amat berguna apabila bekerja dengan penyemak imbas tanpa kepala, di mana pengendalian kandungan dinamik dan interaksi tapak yang kompleks memerlukan pengekodan tambahan.

Menyediakan ScraperAPI dengan Selenium

Mengintegrasikan mod proksi ScraperAPI dengan Selenium, dipermudahkan dengan menggunakan Selenium Wire, alat yang membolehkan konfigurasi proksi mudah. Berikut ialah persediaan pantas:

  1. Daftar untuk ScraperAPI: Buat akaun dan dapatkan kunci API anda.
  2. Pasang Selenium Wire: Gantikan Selenium standard dengan Selenium Wire dengan menjalankan pip install selenium-wire.
  3. Konfigurasikan Proksi: Gunakan kumpulan proksi ScraperAPI dalam tetapan WebDriver anda untuk menguruskan putaran IP dengan mudah.

Setelah disepadukan, konfigurasi ini membolehkan interaksi yang lebih lancar dengan halaman dinamik, alamat IP berputar secara automatik dan melangkau had kadar tanpa kerumitan manual mengurus proksi dalam persekitaran penyemak imbas tanpa kepala.

Coretan di bawah menunjukkan cara mengkonfigurasi proksi ScraperAPI dalam Python:

import os
import time

from bs4 import BeautifulSoup
from dotenv import load_dotenv
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# Load environment variables
load_dotenv()


def target_com_scraper():
    """
    SCRAPER SETTINGS

    - API_KEY: Your ScraperAPI key. Get your API Key ==> https://www.scraperapi.com/?fp_ref=eunit
    """

    API_KEY = os.getenv("API_KEY", "yourapikey")

    # ScraperAPI proxy settings (with HTTP and HTTPS variants)
    scraper_api_proxies = {
        'proxy': {
            'http': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'https': f'http://scraperapi:{API_KEY}@proxy-server.scraperapi.com:8001',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

    # URLs to scrape
    url_list = [
        "https://www.target.com/p/enclosed-cat-litter-box-xl-up-up/-/A-90310047?preselect=87059440#lnk=sametab",
    ]

    # Store scraped data
    scraped_data = []

    # Setup Selenium options with proxy
    options = Options()
    # options.add_argument("--headless")  # Uncomment for headless mode
    options.add_argument("--no-sandbox")
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-in-process-stack-traces")
    options.add_argument("--window-size=1920,1080")
    options.add_argument("--log-level=3")
    options.add_argument("--disable-logging")
    options.add_argument("--start-maximized")

    # Initialize Selenium WebDriver
    driver = webdriver.Chrome(service=ChromeService(
        ChromeDriverManager().install()), options=options, seleniumwire_options=scraper_api_proxies)

    def scroll_down_page(distance=100, delay=0.2):
        """
        Scroll down the page gradually until the end.

        Args:
        - distance: Number of pixels to scroll by in each step.
        - delay: Time (in seconds) to wait between scrolls.
        """
        total_height = driver.execute_script(
            "return document.body.scrollHeight")
        scrolled_height = 0

        while scrolled_height < total_height:
            # Scroll down by 'distance' pixels
            driver.execute_script(f"window.scrollBy(0, {distance});")
            scrolled_height += distance
            time.sleep(delay)  # Pause between scrolls

            # Update the total page height after scrolling
            total_height = driver.execute_script(
                "return document.body.scrollHeight")

        print("Finished scrolling.")

    try:
        for url in url_list:

            # Use Selenium to load the page
            driver.get(url)
            time.sleep(5)  # Give the page time to load

            # Scroll down the page
            scroll_down_page()

            # Extract single elements with Selenium
            def extract_element_text(selector, description):
                try:
                    # Wait for the element and extract text
                    element = WebDriverWait(driver, 5).until(
                        EC.visibility_of_element_located(
                            (By.CSS_SELECTOR, selector))
                    )
                    text = element.text.strip()
                    return text if text else None  # Return None if the text is empty
                except TimeoutException:
                    print(f"Timeout: Could not find {description}. Setting to None.")
                    return None
                except NoSuchElementException:
                    print(f"Element not found: {description}. Setting to None.")
                    return None

            # Extract single elements
            reviews_data = {}

            reviews_data["secondary_rating"] = extract_element_text("div[data-test='secondary-rating']",
                                                                    "secondary_rating")
            reviews_data["rating_count"] = extract_element_text(
                "div[data-test='rating-count']", "rating_count")
            reviews_data["rating_histogram"] = extract_element_text("div[data-test='rating-histogram']",
                                                                    "rating_histogram")
            reviews_data["percent_recommended"] = extract_element_text("div[data-test='percent-recommended']",
                                                                       "percent_recommended")
            reviews_data["total_recommendations"] = extract_element_text("div[data-test='total-recommendations']",
                                                                         "total_recommendations")

            # Extract reviews from 'reviews-list'
            scraped_reviews = []

            # Use Beautiful Soup to extract other content
            soup = BeautifulSoup(driver.page_source, 'html.parser')

            # Select all reviews in the list using BeautifulSoup
            reviews_list = soup.select("div[data-test='reviews-list'] > div")

            for review in reviews_list:
                # Create a dictionary to store each review's data
                ratings = {}

                # Extract title
                title_element = review.select_one(
                    "h4[data-test='review-card--title']")
                ratings['title'] = title_element.text.strip(
                ) if title_element else None

                # Extract rating
                rating_element = review.select_one("span[data-test='ratings']")
                ratings['rating'] = rating_element.text.strip(
                ) if rating_element else None

                # Extract time
                time_element = review.select_one(
                    "span[data-test='review-card--reviewTime']")
                ratings['time'] = time_element.text.strip(
                ) if time_element else None

                # Extract review text
                text_element = review.select_one(
                    "div[data-test='review-card--text']")
                ratings['text'] = text_element.text.strip(
                ) if text_element else None

                # Append each review to the list of reviews
                scraped_reviews.append(ratings)

            # Append the list of reviews to the main product data
            reviews_data["reviews"] = scraped_reviews

            # Append the overall data to the scraped_data list
            scraped_data.append(reviews_data)

        # Output the scraped data
        print(f"Scraped data: {scraped_data}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        # Ensure driver quits after scraping
        driver.quit()


if __name__ == "__main__":
    target_com_scraper()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dengan persediaan ini, permintaan yang dihantar ke pelayan proksi ScraperAPI dialihkan ke tapak web Target.com, memastikan IP sebenar anda tersembunyi dan menyediakan pertahanan yang teguh terhadap mekanisme anti-mengikis tapak web Target.com. Proksi juga boleh disesuaikan dengan memasukkan parameter seperti render=true untuk pemaparan JavaScript atau menentukan country_code untuk geolokasi.

Data Semakan Dikikis daripada Target.com

Kod JSON di bawah ialah contoh respons menggunakan Pengikis Ulasan Sasaran:

python3 -m venv env
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

How to Scrape Target.com Reviews with Python

Cara Menggunakan Pengikis Ulasan Cloud Target.com Kami

Jika anda ingin mendapatkan ulasan Target.com anda dengan cepat tanpa menyediakan persekitaran anda, mengetahui cara mengekod atau menyediakan proksi, anda boleh menggunakan API Pengikis Sasaran kami untuk mendapatkan data yang anda perlukan secara percuma. API Pengikis Sasaran dihoskan pada platform Apify dan sedia untuk digunakan tanpa sebarang persediaan diperlukan.

Pergi ke Apify dan klik pada "Cuba secara percuma" untuk bermula sekarang.

How to Scrape Target.com Reviews with Python

Menggunakan Ulasan Sasaran untuk Analisis Sentimen

Sekarang anda mempunyai data ulasan dan penilaian Target.com anda, tiba masanya untuk memahami data ini. Data ulasan dan penilaian ini boleh memberikan cerapan berharga tentang pendapat pelanggan tentang produk atau perkhidmatan tertentu. Dengan menganalisis ulasan ini, anda boleh mengenal pasti pujian dan aduan biasa, mengukur kepuasan pelanggan, meramalkan gelagat masa hadapan dan mengubah ulasan ini menjadi cerapan yang boleh diambil tindakan.

Sebagai profesional pemasaran atau pemilik perniagaan yang mencari cara untuk memahami khalayak utama anda dengan lebih baik dan meningkatkan strategi pemasaran dan produk anda. Di bawah ialah beberapa cara anda boleh mengubah data ini menjadi cerapan yang boleh diambil tindakan untuk mengoptimumkan usaha pemasaran, menambah baik strategi produk dan meningkatkan penglibatan pelanggan:

  • Menambah Penawaran Produk: Kenal pasti aduan atau pujian pelanggan biasa untuk memperhalusi ciri produk.
  • Meningkatkan Perkhidmatan Pelanggan: Kesan ulasan negatif awal untuk menangani isu dan mengekalkan kepuasan pelanggan.
  • Mengoptimumkan Kempen Pemasaran: Gunakan cerapan daripada maklum balas positif untuk mencipta kempen yang diperibadikan dan disasarkan.

Dengan menggunakan ScraperAPI untuk mengumpulkan data semakan berskala besar pada skala, anda boleh mengautomasikan dan menskalakan analisis sentimen, membolehkan membuat keputusan dan pertumbuhan yang lebih baik.

Soalan Lazim Mengenai Mengikis Ulasan Produk Sasaran

Adakah undang-undang mengikis halaman produk Target.com?

Ya, adalah sah untuk melarikan diri dari Target.com untuk mendapatkan maklumat yang tersedia secara umum, seperti penilaian dan ulasan produk. Tetapi penting untuk diingat bahawa maklumat awam ini mungkin masih termasuk butiran peribadi.

Kami menulis catatan blog tentang aspek undang-undang pengikisan web dan pertimbangan etika. Anda boleh mengetahui lebih lanjut di sana.

Adakah Target.com menyekat pengikis?

Ya, Target.com melaksanakan pelbagai langkah anti-mengikis untuk menyekat pengikis automatik. Ini termasuk cabaran penyekatan IP, pengehadan kadar dan CAPTCHA, semuanya direka untuk mengesan dan menghentikan permintaan automatik yang berlebihan daripada pengikis atau bot.

Bagaimanakah anda mengelak daripada disekat oleh Target.com?

Untuk mengelak daripada disekat oleh Target.com, anda harus memperlahankan kadar permintaan, menggilirkan ejen pengguna, menggunakan teknik penyelesaian CAPTCHA dan elakkan membuat permintaan berulang atau frekuensi tinggi. Menggabungkan kaedah ini dengan proksi boleh membantu mengurangkan kemungkinan pengesanan.

Selain itu, pertimbangkan untuk menggunakan pengikis khusus seperti Target Scraper API atau Scraping API untuk memintas pengehadan Target.com ini.

Adakah saya perlu menggunakan proksi untuk mengikis Target.com?

Ya, menggunakan proksi adalah penting untuk mengikis Target.com dengan berkesan. Proksi membantu mengedarkan permintaan merentas berbilang alamat IP, meminimumkan peluang untuk disekat. Proksi ScraperAPI menyembunyikan IP anda, menjadikannya lebih sukar bagi sistem anti-mengikis untuk mengesan aktiviti anda.

Membungkus

Dalam artikel ini, anda mempelajari cara membina pengikis penilaian dan ulasan Target.com menggunakan Python, Selenium dan menggunakan ScraperAPI untuk memintas mekanisme anti-mengikis Target.com dengan berkesan, dan untuk mengelakkan larangan IP dan meningkatkan prestasi mengikis.

Dengan alat ini, anda boleh mengumpul maklum balas pelanggan yang berharga dengan cekap dan boleh dipercayai.

Setelah anda mengumpulkan data ini, langkah seterusnya ialah menggunakan analisis sentimen untuk mendedahkan cerapan utama. Dengan menganalisis ulasan pelanggan, anda sebagai perniagaan boleh mengenal pasti kekuatan produk, menangani titik kesakitan dan mengoptimumkan strategi pemasaran anda untuk memenuhi keperluan pelanggan anda dengan lebih baik.

Dengan menggunakan API Pengikis Sasaran untuk pengumpulan data berskala besar, anda boleh memantau ulasan secara berterusan dan kekal di hadapan dalam memahami sentimen pelanggan, membolehkan anda memperhalusi pembangunan produk dan mencipta lebih banyak kempen pemasaran yang disasarkan.

Cuba ScraperAPI sekarang untuk pengekstrakan data berskala besar yang lancar atau gunakan Pengikis Ulasan Cloud Target.com kami!

Untuk lebih banyak tutorial dan kandungan yang hebat, sila ikuti saya di Twitter (X) @eunit99

Atas ialah kandungan terperinci Cara Mengikis Ulasan Target.com dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan