技術共有

AIGC クローラー コードの例: コンテンツをクロールしてコンテンツを生成するための Scrapy および OpenAI API

2024-07-12

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

クローラー業界での長年の経験から、さまざまなデマンドコードのプログラミングは非常に困難で緻密な作業ですが、AI の普及に伴い、AI 自動化によって目的のテキスト コンテンツを自動的に取得して生成できないか考えています。プログラム。前提として、クローラー技術(Scrapyなど)と生成AIモデル(GPT-4など)を組み合わせて完成させる予定です。

以下は、AIGC クローラー クラスに関する私の考えであり、AIGC クローラー アプリケーションの構築方法を示しています。

ここに画像の説明を挿入します

1. 必要な依存関係をインストールする

まず、Scrapy と OpenAI の API クライアント ライブラリがインストールされていることを確認します。

pip install scrapy openai
  • 1

2. OpenAI APIの設定

OpenAI API キーを取得して環境変数を構成するか、それをコード内で直接使用する必要があります。

3. Scrapy クローラーを作成する

以下は、コンテンツをスクレイピングして新しいコンテンツを生成するための基本的な Scrapy クローラーの例です。

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. Scrapyプロジェクトの設定

必ずsettings.pyUSER_AGENT やダウンロード遅延などの適切な設定を構成します。

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. クローラーを実行する

コマンドライン経由で Scrapy クローラーを実行します。

scrapy crawl aigc_spider
  • 1

6. 拡張機能

複数のページを処理する

改訂parseメソッドを使用して、複数のページを処理し、ディープ クロールを実行できるようにします。

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

さらにビルド設定を追加する

生成されたコンテンツのパラメータを調整します(追加など)。temperatureそしてtop_pパラメーターを使用して、より多様なコンテンツを生成します。

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

上記は、Scrapy と OpenAI API を組み合わせて、Web サイトのコンテンツを自動的にクロールし、新しいコンテンツを生成する AIGC クローラー アプリケーションを構築する方法です。この方法は、コンテンツ作成やデータ拡張など、大量のコンテンツ生成を必要とするアプリケーション シナリオに適しています。実際のアプリケーションでは、最終的には、さまざまなタイプのクローラのニーズを満たすために、クローリングと生成ロジックのより洗練された制御と最適化が必要になる可能性があります。