Technologieaustausch

AIGC-Crawler-Codebeispiel: Scrapy- und OpenAI-API zum Crawlen von Inhalten und Generieren von Inhalten

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Aufgrund meiner langjährigen Erfahrung in der Crawler-Branche ist das Programmieren verschiedener Bedarfscodes wirklich eine sehr schwierige und sorgfältige Aufgabe. Angesichts der Popularität von KI denke ich darüber nach, ob es möglich ist, die gewünschten Textinhalte durch KI-Automatisierung automatisch zu erfassen und zu generieren Programme. Die Prämisse ist, dass ich plane, es durch die Kombination von Crawler-Technologie (wie Scrapy) und generativen KI-Modellen (wie GPT-4) zu vervollständigen.

Das Folgende sind meine Gedanken zur AIGC-Crawler-Klasse und zeigen, wie man eine AIGC-Crawler-Anwendung erstellt.

Fügen Sie hier eine Bildbeschreibung ein

1. Installieren Sie die erforderlichen Abhängigkeiten

Stellen Sie zunächst sicher, dass Sie die API-Client-Bibliotheken von Scrapy und OpenAI installiert haben.

pip install scrapy openai
  • 1

2. Konfigurieren Sie die OpenAI-API

Sie benötigen einen OpenAI-API-Schlüssel und müssen Umgebungsvariablen konfigurieren oder ihn direkt in Ihrem Code verwenden.

3. Erstellen Sie einen Scrapy-Crawler

Unten finden Sie ein einfaches Scrapy-Crawler-Beispiel zum Scrapen von Inhalten und zum Generieren neuer Inhalte.

my_spider.py

import scrapy
import openai

class AIGCSpider(scrapy.Spider):
    name = 'aigc_spider'
    start_urls = ['http://example.com']

    def __init__(self, *args, **kwargs):
        super(AIGCSpider, self).__init__(*args, **kwargs)
        openai.api_key = 'your-openai-api-key'  # 替换为你的OpenAI API密钥

    def parse(self, response):
        # 提取网页内容
        content = response.xpath('//body//text()').getall()
        content = ' '.join(content).strip()

        # 使用OpenAI生成新内容
        generated_content = self.generate_content(content)

        # 处理生成的内容,如保存到文件
        with open('generated_content.txt', 'a') as f:
            f.write(generated_content + 'n')

        self.log(f"Generated content for {response.url}")

    def generate_content(self, prompt):
        try:
            response = openai.Completion.create(
                engine="davinci-codex",
                prompt=prompt,
                max_tokens=150
            )
            generated_text = response.choices[0].text.strip()
            return generated_text
        except Exception as e:
            self.log(f"Error generating content: {e}")
            return ""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

4. Konfigurieren Sie das Scrapy-Projekt

Stellen Sie sicher, dasssettings.pyKonfigurieren Sie entsprechende Einstellungen wie USER_AGENT und Download-Verzögerung.

settings.py
BOT_NAME = 'aigc_bot'

SPIDER_MODULES = ['aigc_bot.spiders']
NEWSPIDER_MODULE = 'aigc_bot.spiders'

# 遵守robots.txt规则
ROBOTSTXT_OBEY = True

# 用户代理
USER_AGENT = 'aigc_bot (+http://www.yourdomain.com)'

# 下载延迟
DOWNLOAD_DELAY = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5. Führen Sie den Crawler aus

Führen Sie den Scrapy-Crawler über die Befehlszeile aus:

scrapy crawl aigc_spider
  • 1

6. Erweiterte Funktionen

Behandeln Sie mehrere Seiten

ÜberarbeitenparseMethode, die es ihr ermöglicht, mehrere Seiten zu verarbeiten und Deep Crawling durchzuführen.

def parse(self, response):
    # 提取网页内容
    content = response.xpath('//body//text()').getall()
    content = ' '.join(content).strip()

    # 使用OpenAI生成新内容
    generated_content = self.generate_content(content)

    # 处理生成的内容,如保存到文件
    with open('generated_content.txt', 'a') as f:
        f.write(f"URL: {response.url}n")
        f.write(generated_content + 'nn')

    self.log(f"Generated content for {response.url}")

    # 跟踪所有链接
    for href in response.css('a::attr(href)').get():
        yield response.follow(href, self.parse)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Fügen Sie weitere Build-Einstellungen hinzu

Passen Sie die Parameter des generierten Inhalts an, z. B. HinzufügentemperatureUndtop_pParameter, um vielfältigere Inhalte zu generieren.

def generate_content(self, prompt):
    try:
        response = openai.Completion.create(
            engine="davinci-codex",
            prompt=prompt,
            max_tokens=150,
            temperature=0.7,
            top_p=0.9
        )
        generated_text = response.choices[0].text.strip()
        return generated_text
    except Exception as e:
        self.log(f"Error generating content: {e}")
        return ""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Das Obige zeigt, wie ich eine AIGC-Crawler-Anwendung erstellen kann, indem ich Scrapy und die OpenAI-API kombiniere, um Website-Inhalte automatisch zu crawlen und neue Inhalte zu generieren. Diese Methode eignet sich für Anwendungsszenarien, die eine große Menge an Inhaltsgenerierung erfordern, wie z. B. Inhaltserstellung, Datenverbesserung usw. In praktischen Anwendungen benötigen wir möglicherweise möglicherweise eine verfeinerte Steuerung und Optimierung der Crawling- und Generierungslogik, um den Anforderungen verschiedener Crawlertypen gerecht zu werden.