Berbagi teknologi

Contoh kode perayap AIGC: Scrapy dan OpenAI API untuk merayapi konten dan menghasilkan konten

2024-07-12

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

Selama bertahun-tahun pengalaman saya di industri perayap, memprogram berbagai kode permintaan benar-benar merupakan pekerjaan yang sangat sulit dan teliti. Dengan popularitas AI, saya memikirkan apakah mungkin untuk secara otomatis menangkap dan menghasilkan konten teks yang diinginkan melalui otomatisasi AI program. Premisnya adalah saya berencana menyelesaikannya dengan menggabungkan teknologi crawler (seperti Scrapy) dan model AI generatif (seperti GPT-4).

Berikut pemikiran saya tentang kelas crawler AIGC, yang menunjukkan cara membangun aplikasi crawler AIGC.

Masukkan deskripsi gambar di sini

1. Instal dependensi yang diperlukan

Pertama, pastikan Anda telah menginstal pustaka klien API Scrapy dan OpenAI.

pip install scrapy openai
  • 1

2. Konfigurasikan API OpenAI

Anda harus memiliki kunci API OpenAI dan mengonfigurasi variabel lingkungan atau menggunakannya langsung dalam kode Anda.

3. Buat perayap Scrapy

Di bawah ini adalah contoh dasar perayap Scrapy untuk menggores konten dan menghasilkan konten baru.

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. Konfigurasikan proyek Scrapy

Pastikan untuksettings.pyKonfigurasikan pengaturan yang sesuai seperti USER_AGENT dan penundaan unduhan.

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. Jalankan perayap

Jalankan perayap Scrapy melalui baris perintah:

scrapy crawl aigc_spider
  • 1

6. Fungsi yang diperluas

Menangani banyak halaman

Merevisiparsemetode, memungkinkannya menangani banyak halaman dan melakukan perayapan mendalam.

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

Tambahkan lebih banyak pengaturan build

Sesuaikan parameter konten yang dihasilkan, seperti penambahantemperatureDantop_pparameter untuk menghasilkan konten yang lebih beragam.

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

Di atas adalah bagaimana saya membangun aplikasi perayap AIGC dengan menggabungkan Scrapy dan OpenAI API untuk merayapi konten situs web secara otomatis dan menghasilkan konten baru. Metode ini cocok untuk skenario aplikasi yang memerlukan pembuatan konten dalam jumlah besar, seperti pembuatan konten, peningkatan data, dll. Dalam penerapan praktis, pada akhirnya kita mungkin perlu memiliki kontrol yang lebih baik dan optimalisasi logika perayapan dan pembangkitan untuk memenuhi kebutuhan berbagai jenis perayap.