Condivisione della tecnologia

Esempio di codice del crawler AIGC: API Scrapy e OpenAI per eseguire la scansione dei contenuti e generare contenuti

2024-07-12

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

Per la mia pluriennale esperienza nel settore dei crawler, la programmazione di vari codici di domanda è davvero un lavoro molto laborioso e meticoloso. Con la popolarità dell'intelligenza artificiale, sto pensando se sia possibile acquisire e generare automaticamente il contenuto testuale desiderato tramite l'automazione dell'intelligenza artificiale programmi. La premessa è che intendo completarlo combinando tecnologia crawler (come Scrapy) e modelli di intelligenza artificiale generativa (come GPT-4).

Di seguito sono riportati i miei pensieri sulla classe crawler AIGC, che mostra come creare un'applicazione crawler AIGC.

Inserisci qui la descrizione dell'immagine

1. Installare le dipendenze necessarie

Innanzitutto, assicurati di avere installate le librerie client API di Scrapy e OpenAI.

pip install scrapy openai
  • 1

2. Configura l'API OpenAI

Devi avere una chiave API OpenAI e configurare le variabili di ambiente o utilizzarla direttamente nel tuo codice.

3. Crea un crawler Scrapy

Di seguito è riportato un esempio di un crawler Scrapy di base che analizza i contenuti e genera nuovi contenuti.

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. Configura il progetto Scrapy

Assicurati chesettings.pyConfigura le impostazioni appropriate come USER_AGENT e ritardo del download.

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. Esegui il crawler

Esegui il crawler Scrapy tramite riga di comando:

scrapy crawl aigc_spider
  • 1

6. Funzioni estese

Gestisci più pagine

Rivedereparsemetodo, consentendogli di gestire più pagine ed eseguire la scansione approfondita.

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

Aggiungi altre impostazioni di creazione

Regola i parametri del contenuto generato, come l'aggiuntatemperatureEtop_pparametri per generare contenuti più diversificati.

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

Quanto sopra è come posso creare un'applicazione crawler AIGC combinando Scrapy e l'API OpenAI per eseguire la scansione automatica del contenuto del sito Web e generare nuovi contenuti. Questo metodo è adatto per scenari applicativi che richiedono grandi quantità di generazione di contenuti, come creazione di contenuti, miglioramento dei dati, ecc. Nelle applicazioni pratiche, potremmo eventualmente aver bisogno di un controllo e di un'ottimizzazione più raffinati della logica di scansione e generazione per soddisfare le esigenze di vari tipi di crawler.