希米日志


主页 代码 笔记 软件 闲谈 留言


12 0

前言:

  • 前段时间用AI生成代码写了个轻量博客程序,发群里不少小伙伴看到(当天访问ip都过千了)
  • 咨询的小伙伴也不少,重复答疑也是有些辛苦,于是写篇调教gpt的文章,该何姿势切入
  • 以下内容纯属个人理解,小作文不会写, 就这么凑合看吧!

解释:

  1. 首先要明白GPT并非真人,理解能力还是有限的,注意叙述逻辑,条理清晰更易被理解答疑;
  2. 主要还是看你的思维方向是否合理,对于代码理解并没有太高求;
  3. 开始前最重要的一条:备份相关数据,备份相关数据,备份相关数据;
  4. 咨询问题前先给出素材或是问题代码供参考,以便于给出更为准确的回答;
  5. 若没有直接说明要求1,2,3,4或是每条要求以分号隔开;
  6. 最后一行写上请给出完整代码或是部分需要修改的代码,需要何种语言代码;
  7. 最好在前面给出当前运行环境,减少修改次数;
  8. 代码如出现错误,先看翻译提示,不明白直接复制发送给gtp,如果修复后代码依然有故障;
  9. 这时候就该考虑是否运行环境兼容有问题,可以咨询该代码需要的运行环境,并给出兼容行;
  10. 测试代码,然后依次测试环境是否满足要求,如果运行环境检测正常,就得换个思路咨询了;
  11. 例如:将项目分割为多个小模块功能,每个单独进行测试,测试完成后,再进行整合到一起;
  12. 如果上述方法依然不行,就得考虑你自己的思维方向是否正正确了,可以直接提问;
  13. 要实现某某功能,有啥推荐方法,目前运行环境是什么样的,然后自行判断是否可行!
  14. 下方给出具体案例,及询问方法,出错纠正,提供点思路供参考;

案例:

  • 临时起意准备将多年前asp博客程序(zblog)的纯静态html备份程序搬家到现在的typecho上;
  • 要实现此功能首先要理清思路, 需要哪些准备工作,先列出来;

准备:

1. 分析html结构,需要获取那些数据,暂定为:标题,发布时间,正文,文章分类, (标签之类无用处选择丢弃).
2. 分析ytpecho发布文章原理,关联数据库表有哪些,查询结果如下:(如何知道的,直接问gpt就行啦).

2.1 typecho_contents表: 文章主要内容,标题,发布时间,分类信息查询id,html内容导入到这里.
2.2 typecho_relationships表: 文章内容表对应 (cid) 和文章分类/或是标签 (mid) 进行关联.
2.3 typecho_metas表:文章分类名,标签名,都是存在这里的,typecho_relationships表mid与这里关联的.

3. 最重要一步备份数据,这里我只用到两个表,备份typecho_contents与typecho_relationships即可.
  • 具体代码问gpt 就行,给出案例typecho_contents,自行修改备份typecho_relationships.

问题:

  • sql备份 typecho_contents表为typecho_contents_bak,同时备份内部所有数据 答案:
  -  -- 如果备份表已存在,先删除
  -  DROP TABLE IF EXISTS `typecho_contents_bak`;
  -  -- 创建备份表,结构与原表一致
  -  CREATE TABLE `typecho_contents_bak` LIKE `typecho_contents`;
  -  -- 将原表中的数据插入到备份表中
  -  INSERT INTO `typecho_contents_bak` SELECT * FROM `typecho_contents`;
4. 解压asp备份程序,获取archives目录下的所有html防止在一个独立目并打包上传至服务器;

执行:

1. 使用GTP生成代码,提取文章内容
  • 1.1 未提供html源代码给gtp,识别失败
  • 例 1: 问:
  • php 读取html中标题,正文内容,并保存到当前目录下(html代码格式参考上条信息),以txt格式保存,
  • 第一行为标题,第二行为发表时间,第三行为分类,第四行开始为正文,保存名称为标题 答:
 <?php
// 加载并解析HTML文件
$htmlFile = 'yourfile.html';  // 替换为你的HTML文件路径
$html = file_get_contents($htmlFile);

$dom = new DOMDocument;
libxml_use_internal_errors(true); // 忽略HTML格式错误
$dom->loadHTML($html);
libxml_clear_errors();

$xpath = new DOMXPath($dom);

// 提取标题
$titleNode = $xpath->query("//h1")->item(0);
$title = $titleNode ? trim($titleNode->textContent) : '';

// 提取发表时间
$dateNode = $xpath->query("//time")->item(0);
$date = $dateNode ? trim($dateNode->textContent) : '';

// 提取分类
$categoryNode = $xpath->query("//div[@class='category']")->item(0);
$category = $categoryNode ? trim($categoryNode->textContent) : '';

// 提取正文内容
$bodyNode = $xpath->query("//div[@class='content']")->item(0);
$body = $bodyNode ? trim($bodyNode->textContent) : '';

// 拼接保存内容
$content = $title . "\n" . $date . "\n" . $category . "\n\n" . $body;

// 生成文件名,去除不合法字符
$filename = preg_replace('/[\/:*?"<>|]/', '', $title) . '.txt';

// 保存到文件
file_put_contents($filename, $content);

echo "保存成功:$filename\n";
?>

问: 上面问题忘记加上批量读取输出,补上 "$htmlFile = 'yourfile.html'; " 将其修改为当前目录下所有的html文件,批量获取并批量保存 答:


     <#?php
// 获取当前目录下所有 .html 文件
$htmlFiles = glob("*.html");
foreach ($htmlFiles as $htmlFile) {
    // 加载并解析HTML文件
    $html = file_get_contents($htmlFile);
    $dom = new DOMDocument;
    libxml_use_internal_errors(true); // 忽略HTML格式错误
    $dom->loadHTML($html);
    libxml_clear_errors();

    $xpath = new DOMXPath($dom);

    // 提取标题
    $titleNode = $xpath->query("//h1")->item(0);
    $title = $titleNode ? trim($titleNode->textContent) : '未命名';

    // 提取发表时间
    $dateNode = $xpath->query("//time")->item(0);
    $date = $dateNode ? trim($dateNode->textContent) : '未知日期';

    // 提取分类
    $categoryNode = $xpath->query("//div[@class='category']")->item(0);
    $category = $categoryNode ? trim($categoryNode->textContent) : '未分类';

    // 提取正文内容
    $bodyNode = $xpath->query("//div[@class='content']")->item(0);
    $body = $bodyNode ? trim($bodyNode->textContent) : '无内容';

    // 拼接保存内容
    $content = $title . "\n" . $date . "\n" . $category . "\n\n" . $body;

    // 生成文件名,去除不合法字符
    $filename = preg_replace('/[\/:*?"<>|]/', '', $title) . '.txt';

    // 如果生成的文件名为空或与已存在的文件名冲突,使用原文件名作为基础
    if (empty($filename) || file_exists($filename)) {
        $filename = pathinfo($htmlFile, PATHINFO_FILENAME) . '.txt';
    }
    // 保存到文件
    file_put_contents($filename, $content);
    echo "保存成功:$filename\n";
'}
#?#>

验证结果: 无法获取发布日期,文章内容

问: (发现提取处理的txt无正文内容与标题,但是目录内txt过多故出现新问题) PHP删除当前目录下所有txt后缀文件,给出案例代码 答:

     <?php
// 获取当前目录下所有 .txt 文件
$txtFiles = glob("*.txt");

foreach ($txtFiles as $txtFile) {
    // 尝试删除文件
    if (unlink($txtFile)) {
        echo "成功删除文件: $txtFile\n";
    } else {
        echo "无法删除文件: $txtFile\n";
    }
}
?>

执行结果: 成功删除所有txt文件

  • 继续下一步:
  • 1.2 改变思路:提供html源代码

问: 提供html源码示例如下:

    <title>根据句柄取进程路径-    紫灵幽梦</title>
 <div class="entry">
  <div class="person-info">
<span style="font-size: 75%;color: #393939;">2016-11-8  <br />18:29</span>
 <br />
  <a style="text-decoration: none" target="_blank" href="">
    <img class="face" src="http://zlym.cc/zb_users/theme/ubuntu2/style/ubuntu2/heads/1.png" alt="root" />
    <br />root
</a>
  </div>
  <div class="post">
    <div class="post2">
      <div class="post-header">
        <div class="post-header-left"><div class="post-header-right">
        <h4 class="post-title"><a>[程序代码]根据句柄取进程路径 </a> </h4>

        </div></div>
      </div>
      <div class="post-contents">
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long<br />
Private Sub Command1_Click()<br />
Dim PID As Long<br />
GetWindowThreadProcessId Text1, PID '根据句柄取得进程ID,text1为句柄<br />
<br />
Set objWMIService = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\.\root\cimv2")<br />
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")<br />
For Each objprocess In colProcesses<br />
<br />
If objprocess.processid = PID Then&nbsp; '当某进程ID与句柄ID相同时<br />
Text2 = objprocess.ExecutablePath&nbsp;&nbsp; '取得进程路径<br />
End If<br />
<br />
Next<br />
End Sub<br />
'----------------------------------------------------根据句柄取进程路径<br />
<br />
        <div style="margin-top: 20pt;"></div>
  • 根据以上内容修改下面代码:

 <?php
// 获取当前目录下所有 .html 文件
$htmlFiles = glob("*.html");
foreach ($htmlFiles as $htmlFile) {
    // 加载并解析HTML文件
    $html = file_get_contents($htmlFile);
    $dom = new DOMDocument;
    libxml_use_internal_errors(true); // 忽略HTML格式错误
    $dom->loadHTML($html);
    libxml_clear_errors();
    $xpath = new DOMXPath($dom);
    // 提取标题
    $titleNode = $xpath->query("//h1")->item(0);
    $title = $title

 2024-08-22 10:31:00

二维码



评论:

已有评论:

目 录




1 2 3