<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AI与探索 on 码上生长 - 探索个人成长的无限可能</title>
    <link>https://dstweihao.cn/categories/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/</link>
    <description>Recent content in AI与探索 on 码上生长 - 探索个人成长的无限可能</description>
    <generator>Hugo -- 0.144.2</generator>
    <language>zh</language>
    <lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://dstweihao.cn/categories/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI工具使用心得</title>
      <link>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/ai%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E5%BF%83%E5%BE%97/</link>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/ai%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E5%BF%83%E5%BE%97/</guid>
      <description>&lt;p&gt;如果可以，想办法用上ChatGPT、Google Genmini这些AI工具。不管是工作还是学习，与国内的几个AI大模型相比，差距真的巨大，这不是崇洋媚外，我相信国内大模型会有赶超的那一天，但现在看来，还没到那个时候，没有特别有依据的实验验证，只是从体感来说，至少提前半年甚至一年以上。&lt;/p&gt;
&lt;p&gt;所以，使用相较于国内前沿的工具，无形之中就像是打了信息差，在各方面都会比别人领先一些，可能你和别人是同一个任务，但是，你的效率和产出都会比别人好上很多，而这仅仅是因为工具的不同而已，绝无其他。&lt;/p&gt;
&lt;p&gt;AI的发展是极为迅速的，这个都是显而易见的，从2023年，开始有这种对话式的问答交流，获取想要的资讯，或者说让AI帮忙完成一些文本上的修改任务。&lt;/p&gt;
&lt;p&gt;那时文言一心还没有上线，自己看到一些网站提供了这种功能，然后180元大洋买断了，结果时不时就网页打不开，好像一段时间，就在换域名。现在想起来，当时这种平台，自己好像也没有用来干嘛，无非就是翻译一篇短文、检查下写的文章的错别字等，后来，文言一心上线了，kimi，豆包等都纷纷出现，然后，注意力就转移了，这个买断的平台就没再去打开过了。&lt;/p&gt;
&lt;p&gt;在使用AI的过程中，但印象中，较为深刻的，还是第一次知道和使用 Deepseek ，看到那个思考过程，极为惊艳。在 2025 年年初爆火，后来，只是后来人多了之后，总是因为使用人数太多，服务器资源不足，每次要用一下，经常是没有成功的，这是其一，第二个原因，就是人多了之后，数据被污染得太多了，回答的质量直线下降。然后，转到了豆包AI。&lt;/p&gt;
&lt;p&gt;公司的微信文章，也只是根据公开的平台资料，让它按我提供的模板生成，这部分的工作，之前预估是两天的工作量，我半天就搞定了。在我看来，实在是没有什么必要深究一字一句，只要把表达的东西，传达到位，以及不要显得太过于AI味，就可以了，时间更应该花在高价值上的事情。&lt;/p&gt;
&lt;p&gt;第一次使用超能模式，就知道这个又升级了，这个超能模式，可以抓取平台，只要你提供账号和密码，完全可以帮你做平台系统的测试，当时我第一次使用，都惊呆了。&lt;/p&gt;
&lt;p&gt;后来，我就尝试让它登录公网的平台，让它对每个功能都测试，把暴露的问题，整理成表格给我，我在逐一检查，是否真实有效。&lt;/p&gt;
&lt;p&gt;可以说，豆包是我用过的相对满意的一款AI工具了，至少2025年是这样的。可以说，为我的事情，提供了很大的帮助，但是，这一些，都在2026年爆火之后，戛然而止。&lt;/p&gt;
&lt;p&gt;现在的问题是，使用超能模式，经常被告知当前功能使用爆火，要等几分钟才行。我是没有那么多耐心的，偶尔一两次才行，多了之后，可能要找替代品了。&lt;/p&gt;
&lt;p&gt;恰逢和朋友交流最近基于AI开发的一些事情，说到很多公司都完全是面向AI开发了，大家都称之为“氛围编程”，就是不适应代码交流了，直接就是自然语言，把需求描述清楚，让AI完成项目的代码开发。&lt;/p&gt;
&lt;p&gt;而选择的则是Google提供的IDE工具Google Antigravity，中文名是反重力，完全就是一键生成全部的代码，还自行调试，编译，运行，出现问题，还自行修复，就是到你手上的时候，已经成品了。&lt;/p&gt;
&lt;p&gt;我想起之前使用 dev0 工具，尝试开发一键发文的工具，就是一篇文章，可以同时发布到不同的平台，比如微信公众号、掘金、博客园等，当时，用起来觉得很一般，以为这个方式还不够成熟，接着，也听说豆包提供的TACE插件，都以为，只是能局部支持，而不是整个项目都全部提供，就在这块上面，没有多去关注。&lt;/p&gt;
&lt;p&gt;但是，真正使用起Google Antigravity之后，我心里只觉得，程序员被替代，真的不是痴人说梦。真的，这个时代真的要来了。&lt;/p&gt;
&lt;p&gt;真的，完全可以使用自然语言完成整个项目的代码开发，我是不会Java后端开发的，但是，不影响我把之前在 dev0 工具开发的项目，我直接把项目在Google Antigravity打开，然后，让它根据需求，把这个项目重构，重构后的项目，真的是删除很多错误的代码，错误的功能，错误的编程语言选择，比如之前的前端代码里，有.vue文件的，又有.rect，显得不伦不类的，这次就完全重构，完全基于Vue3框架来开发。&lt;/p&gt;
&lt;p&gt;接着，Java后端的代码也重构，搭配前端项目一起，把项目的架构都梳理清楚了。然后，项目也运行成功了。&lt;/p&gt;
&lt;p&gt;我知道，真的太让我惊叹了。&lt;/p&gt;
&lt;p&gt;如果我要创业，完全可以几个人组成小公司，完全基于这个Google Antigravity来开发项目，至于代码泄漏等问题，小公司完全就是利益至上，先赚到钱再说，管你什么核心技术泄漏，让Google去爬取了。&lt;/p&gt;
&lt;p&gt;这一点大公司完全是不能做的，就是AI这些走的第三方的服务器，他们肯定是先读取到你项目的全部代码，才能给你提供建议，而这个过程，意味着你项目的全部源码，都被第三方公司获取了，这个就是代码泄漏风险，这也是这个氛围编程，无法那么快推进的原因。&lt;/p&gt;
&lt;p&gt;如果你要私有化部署的话，成本是一方面，再者，你成本再高，能比大模型母公司高吗？花的钱越多，意味着功能越强大，如果投入钱搞私有化部署，效果和公网提供的一对比，心里落差极大，这种情况下，真的能坚持使用私有化部署的大模型吗？估计真的忍不了一点。&lt;/p&gt;
&lt;p&gt;当前ini 帮我处理一个因为网络代理，导致在 Mac 电脑上使用VSCode 访问Ubuntu系统的工具，一直失败的问题。&lt;/p&gt;
&lt;p&gt;然后，各种权限都给它了，就一直执行脚本处理，直到解决了为止。类似就是龙虾这个托管电脑。&lt;/p&gt;
&lt;p&gt;可以说，AI工具，用得比较多的是豆包、deekseep、kmini、纳米AI，这些或多或少，都使用过，频次较高，其他的就不提及了。&lt;/p&gt;
&lt;p&gt;只能说AI会发展越来越快，我始终相信，国内的AI工具迟早有一天会超过国外，但是，不是现在，现在来看，还是有很大的差距的，所以，我的看法是，如果可以，真的要赶紧用上Google Genmini和 ChatGPT，真的最少要比国内的AI工具，至少超半年以上。&lt;/p&gt;
&lt;p&gt;很多编程的问题，让豆包和Deekseep排查的时候，明明提供的是同一份信息，但是得出的结果千差万别，Gmini 直接指出了问题出在哪里，一招就命中要害，但是豆包、deekseep提供的方案还是差的太多太多了。&lt;/p&gt;
&lt;p&gt;我的三观真的刷新了，我第一次见到，给出的答案，是如此直接而有效。&lt;/p&gt;
&lt;p&gt;正是在使用 Gmini 的这一段时间，我反复喂给它我的全部信息，让它给我诊断，以及提供发展路径，很多东西说的还是很有道理的。而且，少了很多献媚的措词，至少，让我发现了一个快十年来，一直被我忽视的一个特别主要的一个点，这个点就是所有问题的根源，而我一直以来，都没有注意到。&lt;/p&gt;
&lt;p&gt;打一点这种信息差和时间差，你会比国内没有用这款AI工具的，远超半年甚至一年以上，效果更高，掌握的信息更为准确，何乐而不为。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>如果可以，想办法用上ChatGPT、Google Genmini这些AI工具。不管是工作还是学习，与国内的几个AI大模型相比，差距真的巨大，这不是崇洋媚外，我相信国内大模型会有赶超的那一天，但现在看来，还没到那个时候，没有特别有依据的实验验证，只是从体感来说，至少提前半年甚至一年以上。</p>
<p>所以，使用相较于国内前沿的工具，无形之中就像是打了信息差，在各方面都会比别人领先一些，可能你和别人是同一个任务，但是，你的效率和产出都会比别人好上很多，而这仅仅是因为工具的不同而已，绝无其他。</p>
<p>AI的发展是极为迅速的，这个都是显而易见的，从2023年，开始有这种对话式的问答交流，获取想要的资讯，或者说让AI帮忙完成一些文本上的修改任务。</p>
<p>那时文言一心还没有上线，自己看到一些网站提供了这种功能，然后180元大洋买断了，结果时不时就网页打不开，好像一段时间，就在换域名。现在想起来，当时这种平台，自己好像也没有用来干嘛，无非就是翻译一篇短文、检查下写的文章的错别字等，后来，文言一心上线了，kimi，豆包等都纷纷出现，然后，注意力就转移了，这个买断的平台就没再去打开过了。</p>
<p>在使用AI的过程中，但印象中，较为深刻的，还是第一次知道和使用 Deepseek ，看到那个思考过程，极为惊艳。在 2025 年年初爆火，后来，只是后来人多了之后，总是因为使用人数太多，服务器资源不足，每次要用一下，经常是没有成功的，这是其一，第二个原因，就是人多了之后，数据被污染得太多了，回答的质量直线下降。然后，转到了豆包AI。</p>
<p>公司的微信文章，也只是根据公开的平台资料，让它按我提供的模板生成，这部分的工作，之前预估是两天的工作量，我半天就搞定了。在我看来，实在是没有什么必要深究一字一句，只要把表达的东西，传达到位，以及不要显得太过于AI味，就可以了，时间更应该花在高价值上的事情。</p>
<p>第一次使用超能模式，就知道这个又升级了，这个超能模式，可以抓取平台，只要你提供账号和密码，完全可以帮你做平台系统的测试，当时我第一次使用，都惊呆了。</p>
<p>后来，我就尝试让它登录公网的平台，让它对每个功能都测试，把暴露的问题，整理成表格给我，我在逐一检查，是否真实有效。</p>
<p>可以说，豆包是我用过的相对满意的一款AI工具了，至少2025年是这样的。可以说，为我的事情，提供了很大的帮助，但是，这一些，都在2026年爆火之后，戛然而止。</p>
<p>现在的问题是，使用超能模式，经常被告知当前功能使用爆火，要等几分钟才行。我是没有那么多耐心的，偶尔一两次才行，多了之后，可能要找替代品了。</p>
<p>恰逢和朋友交流最近基于AI开发的一些事情，说到很多公司都完全是面向AI开发了，大家都称之为“氛围编程”，就是不适应代码交流了，直接就是自然语言，把需求描述清楚，让AI完成项目的代码开发。</p>
<p>而选择的则是Google提供的IDE工具Google Antigravity，中文名是反重力，完全就是一键生成全部的代码，还自行调试，编译，运行，出现问题，还自行修复，就是到你手上的时候，已经成品了。</p>
<p>我想起之前使用 dev0 工具，尝试开发一键发文的工具，就是一篇文章，可以同时发布到不同的平台，比如微信公众号、掘金、博客园等，当时，用起来觉得很一般，以为这个方式还不够成熟，接着，也听说豆包提供的TACE插件，都以为，只是能局部支持，而不是整个项目都全部提供，就在这块上面，没有多去关注。</p>
<p>但是，真正使用起Google Antigravity之后，我心里只觉得，程序员被替代，真的不是痴人说梦。真的，这个时代真的要来了。</p>
<p>真的，完全可以使用自然语言完成整个项目的代码开发，我是不会Java后端开发的，但是，不影响我把之前在 dev0 工具开发的项目，我直接把项目在Google Antigravity打开，然后，让它根据需求，把这个项目重构，重构后的项目，真的是删除很多错误的代码，错误的功能，错误的编程语言选择，比如之前的前端代码里，有.vue文件的，又有.rect，显得不伦不类的，这次就完全重构，完全基于Vue3框架来开发。</p>
<p>接着，Java后端的代码也重构，搭配前端项目一起，把项目的架构都梳理清楚了。然后，项目也运行成功了。</p>
<p>我知道，真的太让我惊叹了。</p>
<p>如果我要创业，完全可以几个人组成小公司，完全基于这个Google Antigravity来开发项目，至于代码泄漏等问题，小公司完全就是利益至上，先赚到钱再说，管你什么核心技术泄漏，让Google去爬取了。</p>
<p>这一点大公司完全是不能做的，就是AI这些走的第三方的服务器，他们肯定是先读取到你项目的全部代码，才能给你提供建议，而这个过程，意味着你项目的全部源码，都被第三方公司获取了，这个就是代码泄漏风险，这也是这个氛围编程，无法那么快推进的原因。</p>
<p>如果你要私有化部署的话，成本是一方面，再者，你成本再高，能比大模型母公司高吗？花的钱越多，意味着功能越强大，如果投入钱搞私有化部署，效果和公网提供的一对比，心里落差极大，这种情况下，真的能坚持使用私有化部署的大模型吗？估计真的忍不了一点。</p>
<p>当前ini 帮我处理一个因为网络代理，导致在 Mac 电脑上使用VSCode 访问Ubuntu系统的工具，一直失败的问题。</p>
<p>然后，各种权限都给它了，就一直执行脚本处理，直到解决了为止。类似就是龙虾这个托管电脑。</p>
<p>可以说，AI工具，用得比较多的是豆包、deekseep、kmini、纳米AI，这些或多或少，都使用过，频次较高，其他的就不提及了。</p>
<p>只能说AI会发展越来越快，我始终相信，国内的AI工具迟早有一天会超过国外，但是，不是现在，现在来看，还是有很大的差距的，所以，我的看法是，如果可以，真的要赶紧用上Google Genmini和 ChatGPT，真的最少要比国内的AI工具，至少超半年以上。</p>
<p>很多编程的问题，让豆包和Deekseep排查的时候，明明提供的是同一份信息，但是得出的结果千差万别，Gmini 直接指出了问题出在哪里，一招就命中要害，但是豆包、deekseep提供的方案还是差的太多太多了。</p>
<p>我的三观真的刷新了，我第一次见到，给出的答案，是如此直接而有效。</p>
<p>正是在使用 Gmini 的这一段时间，我反复喂给它我的全部信息，让它给我诊断，以及提供发展路径，很多东西说的还是很有道理的。而且，少了很多献媚的措词，至少，让我发现了一个快十年来，一直被我忽视的一个特别主要的一个点，这个点就是所有问题的根源，而我一直以来，都没有注意到。</p>
<p>打一点这种信息差和时间差，你会比国内没有用这款AI工具的，远超半年甚至一年以上，效果更高，掌握的信息更为准确，何乐而不为。</p>
]]></content:encoded>
    </item>
    <item>
      <title>AI真的可以取代程序员吗？</title>
      <link>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/ai%E7%9C%9F%E7%9A%84%E5%8F%AF%E4%BB%A5%E5%8F%96%E4%BB%A3%E7%A8%8B%E5%BA%8F%E5%91%98%E5%90%97/</link>
      <pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/ai%E7%9C%9F%E7%9A%84%E5%8F%AF%E4%BB%A5%E5%8F%96%E4%BB%A3%E7%A8%8B%E5%BA%8F%E5%91%98%E5%90%97/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950721.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;说到 AI 是否会取代程序员，我的答案是会，但又不完全会。&lt;/p&gt;
&lt;p&gt;在我看来，所谓的取代，其实是要求程序员提升自身能力，向更高层次发展，将比如某个通用函数的封装、代码漏洞检查这类已熟练掌握的工作交给 AI，自己则转变为发布和验收的角色，也就是按照自己的想法下达任务，然后验收任务，形成一个闭环。&lt;/p&gt;
&lt;p&gt;AI 在实际应用中确实面临一些问题，以下是我想到的几点：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;怎样确保 AI 能完全依照你的想法，实现你想要的效果？&lt;/li&gt;
&lt;li&gt;如何判断 AI 生成的内容是否正确？&lt;/li&gt;
&lt;li&gt;何时该使用 AI，何时不该用？&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;就第一个问题而言，未来很可能会演变成面向 AI 编程。你看，现在都已经有 “Prompt 工程师” 这个职位了，他们的职责就是做好与 AI 的沟通工作，思考如何用精准的描述告诉 AI 该做什么。&lt;/p&gt;
&lt;p&gt;回顾人与计算器的交互历史，从最初使用 0 和 1 二进制进行沟通，到后来发展出 C/C++/Java 等高级语言，这些都是对 0 和 1 的上层封装。如今与 AI 交互也是同理，只不过现在我们是用现实中的自然语言与它交流。&lt;/p&gt;
&lt;p&gt;至于第二个问题，关键在于你自己得懂，也就是说不可能完全依赖 AI 而不学习新知识。不然，你怎么判断 AI 生成的内容是否正确呢？&lt;/p&gt;
&lt;p&gt;对于第三个问题，何时使用 AI 就需要进行评估判断了。有些事情看似用 AI 能很快完成，但实际使用时，因输入指令不够具体准确，产出结果可能天差地别，常需多次调整才能满意，自己动手做或许更快，还免得在与 AI 的磨合中浪费时间、徒增郁闷。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950372.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;除此之外，很多人都提到，既然 AI 能生成一整个项目的代码，那还要程序员干什么呢？&lt;/p&gt;
&lt;p&gt;其实，AI 生成的只是项目第一版需求的代码，可项目又不是一锤子买卖，后续还需要不断迭代和更新。这时候该怎么办？全都交给 AI 处理吗？&lt;/p&gt;
&lt;p&gt;理论上似乎是可行的，但就我使用 dev0、豆包和阿里云 AI 等工具开发网页的体验来看，效率实在不高。每次修改一点点内容，AI 都要重新生成全部代码，这个过程极其漫长，项目越大，等待的时间就越久。而且，如果输入的指令不够详细具体，得到的结果相差甚远，还得不断调整到满意为止。有这时间，我自己早就把代码改好了。所以在这种情况下，除非你的 prompt 能力特别强，否则真的是对 AI 又爱又恨。不过话说回来，人与人之间沟通都可能出现信息失真，更何况是与机器沟通呢？面对全是 AI 生成的代码，你真的有足够的信心直接部署到生产环境吗？&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950721.png"></p>
<p>说到 AI 是否会取代程序员，我的答案是会，但又不完全会。</p>
<p>在我看来，所谓的取代，其实是要求程序员提升自身能力，向更高层次发展，将比如某个通用函数的封装、代码漏洞检查这类已熟练掌握的工作交给 AI，自己则转变为发布和验收的角色，也就是按照自己的想法下达任务，然后验收任务，形成一个闭环。</p>
<p>AI 在实际应用中确实面临一些问题，以下是我想到的几点：</p>
<blockquote>
<ol>
<li>怎样确保 AI 能完全依照你的想法，实现你想要的效果？</li>
<li>如何判断 AI 生成的内容是否正确？</li>
<li>何时该使用 AI，何时不该用？</li>
</ol></blockquote>
<p>就第一个问题而言，未来很可能会演变成面向 AI 编程。你看，现在都已经有 “Prompt 工程师” 这个职位了，他们的职责就是做好与 AI 的沟通工作，思考如何用精准的描述告诉 AI 该做什么。</p>
<p>回顾人与计算器的交互历史，从最初使用 0 和 1 二进制进行沟通，到后来发展出 C/C++/Java 等高级语言，这些都是对 0 和 1 的上层封装。如今与 AI 交互也是同理，只不过现在我们是用现实中的自然语言与它交流。</p>
<p>至于第二个问题，关键在于你自己得懂，也就是说不可能完全依赖 AI 而不学习新知识。不然，你怎么判断 AI 生成的内容是否正确呢？</p>
<p>对于第三个问题，何时使用 AI 就需要进行评估判断了。有些事情看似用 AI 能很快完成，但实际使用时，因输入指令不够具体准确，产出结果可能天差地别，常需多次调整才能满意，自己动手做或许更快，还免得在与 AI 的磨合中浪费时间、徒增郁闷。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507161950372.png"></p>
<p>除此之外，很多人都提到，既然 AI 能生成一整个项目的代码，那还要程序员干什么呢？</p>
<p>其实，AI 生成的只是项目第一版需求的代码，可项目又不是一锤子买卖，后续还需要不断迭代和更新。这时候该怎么办？全都交给 AI 处理吗？</p>
<p>理论上似乎是可行的，但就我使用 dev0、豆包和阿里云 AI 等工具开发网页的体验来看，效率实在不高。每次修改一点点内容，AI 都要重新生成全部代码，这个过程极其漫长，项目越大，等待的时间就越久。而且，如果输入的指令不够详细具体，得到的结果相差甚远，还得不断调整到满意为止。有这时间，我自己早就把代码改好了。所以在这种情况下，除非你的 prompt 能力特别强，否则真的是对 AI 又爱又恨。不过话说回来，人与人之间沟通都可能出现信息失真，更何况是与机器沟通呢？面对全是 AI 生成的代码，你真的有足够的信心直接部署到生产环境吗？</p>
<p>要是让 AI 生成第一版需求代码，后续的迭代和维护交给程序员呢？</p>
<p>这同样存在问题，因为 AI 生成的代码大概率不符合团队的代码规范，程序员得花时间去熟悉。而且团队可能已经有封装好的组件库，AI 生成的代码却无法复用这些组件，而是自行实现相同功能，这在迭代和维护时反而重复造轮子了。只是一个项目还好，要是所有项目都是如此，那组件库就形同虚设了。就像 A、B、C 三个由 AI 生成的项目，在迭代过程中又得抽取复用的组件和工具类，绕了一圈又回到组件库这里，仿佛回到了原点。</p>
<p>所以现阶段，无论是想完全依靠 AI 生成项目代码并直接发布到生产环境，还是仅让 AI 生成第一版代码，后续由程序员接手迭代和维护，都不太现实。</p>
<p>不过，现阶段 AI 在演示项目、UI 原型设计方面的表现还是不错的。比如我要实现一个大屏，把需求整理好后让 AI 生成效果图，虽仍需调整，但可作为参考，提高了工作效率。</p>
<blockquote>
<p>智慧工厂大屏需求：</p>
<ol>
<li>实时数据可视化：设备状态、产能、良率、能耗等核心指标实时展示，10 秒刷新</li>
<li>异常预警：设备故障、指标超标等异常即时报警</li>
<li>灵活查看：支持按车间 / 产线切换视图，适配大屏显示</li>
</ol></blockquote>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162001847.png"></p>
<p>而且，AI 还降低了学习某种技术的门槛。以前学习知识点遇到问题，在网上搜了又搜，到处请教，都不一定能得到有效的解释。现在不同了，虽说不能保证 AI 给出的答案一定准确，但你可以要求它提供答案的依据，比如它是从哪篇文章总结出这个答案的，这样你只需进一步甄别就行。在这种情况下，只要你想学，学习任何技术都不是难事。</p>
<p>除了在项目开发和学习方面，AI 还有一些有趣的设想。在 AI 智能体出现之前，我就琢磨过，以后能不能有个 AI 智能体当我的 “替身”。把我所有的信息都喂给它，让它替我完成一些工作，比如写文章。我自己写文章时，对话题的看法、行文风格是怎样的，就希望 AI 智能体写出来的文章也符合这个风格。等把这个 AI 智能体训练到一定程度，说不定都能替我去公司上班。</p>
<p>但这个想法存在不少问题，目前能想到的就有两个。一个是责任承担的问题，这和当下的自动驾驶类似，如果出了事，责任该由谁承担呢？这个责任归属不明确，就阻碍了这种设想的推进；二是温度的问题，人是有温度的，可 AI 有吗？现实中的很多事，对错并非像 1 + 1 = 2 那么绝对，对不一定全对，错也不一定全错，遇到这种情况，AI 真的能解决吗？</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162019293.png"></p>
<p>所以，综合 AI 在实际应用中的各种表现，AI 真的可以取代程序员吗？有这种想法固然很好，但<strong>想法需要生长的土壤，任何激进的想法，没有因地制宜，只能是失败的。</strong></p>
<p>事实上，并不是 AI 取代了程序员，而是掌握了 AI 技能或者更有能力的人，淘汰了其他能力差的程序员。因此，在当前形势下，我们该如何增强自己的核心竞争力呢？</p>
<p>我认为，一方面，要做到知己知彼，既然想用好 AI，就得学习 AI 相关知识。另一方面，借助 AI 快速掌握更多技能，最重要的是<strong>提升解决问题的能力。</strong></p>
<p>这里我说的是技能，而非单纯的技术。因为**技术好固然重要，但如果不能为业务增长提供帮助，那技术再好也没太大价值，现实就是如此，现在都在说降本增效，公司只想看到盈利。**所以追求技术无可厚非，但最好是在清楚认识到这一点的前提下进行。</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202507162019261.png"></p>
]]></content:encoded>
    </item>
    <item>
      <title>基于Selenium实现的必应企业信息抓取工具</title>
      <link>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/%E5%9F%BA%E4%BA%8Eselenium%E7%9A%84%E5%BF%85%E5%BA%94%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF%E6%8A%93%E5%8F%96%E5%B7%A5%E5%85%B7%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</link>
      <pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://dstweihao.cn/posts/%E6%8A%80%E6%9C%AF%E4%B8%8E%E6%9E%B6%E6%9E%84/ai%E4%B8%8E%E6%8E%A2%E7%B4%A2/%E5%9F%BA%E4%BA%8Eselenium%E7%9A%84%E5%BF%85%E5%BA%94%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF%E6%8A%93%E5%8F%96%E5%B7%A5%E5%85%B7%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;h1 id=&#34;1-前言&#34;&gt;1. 前言&lt;/h1&gt;
&lt;p&gt;因为近期在做一些行业客户群的数据分析，拿到&lt;code&gt;600&lt;/code&gt;多条客户信息，需要对其进行分析。由于所在的是&lt;code&gt;To B&lt;/code&gt;行业，所以只能先清理掉个人以及没有明确显示企业相关信息的数据。在此之后，需要基于这些企业名单，仔细分析各企业的情况。这可以通过爱企查的批量功能快速导出各企业的情况，但其要求模板中提供的企业名称必须是全称。&lt;/p&gt;
&lt;p&gt;因此，我需要把剩下的&lt;code&gt;500&lt;/code&gt;多条企业数据的名称一一补全。一开始是打算使用&lt;code&gt;DeepSeek&lt;/code&gt;帮我基于关键词把企业名称补全，但反复验证后发现给的数据基本都是瞎编的。无奈之下，我只能一个一个查，具体操作是通过必应搜索关键词，比如“宁德时代”，然后从搜索结果中找到完整的企业名称“宁德时代新能源科技股份有限公司”复制到表格中。&lt;/p&gt;
&lt;p&gt;可是，如果只是几十条数据还好，这&lt;code&gt;500&lt;/code&gt;多条数据，我要查到猴年马月了，这人工操作实在太繁琐，而且效率太低了，实在忍不了，就想着怎么把这一整个流程实现自动化。&lt;/p&gt;
&lt;p&gt;通过&lt;code&gt;DeepSeek&lt;/code&gt;查了下，可以使用&lt;code&gt;Python&lt;/code&gt;实现，但我没学过&lt;code&gt;Python&lt;/code&gt;，不过编程语言嘛，大同小异，就依葫芦画瓢，把教程走一遍。最开始是打算使用必应搜索&lt;code&gt;API&lt;/code&gt;实现的，因为必应搜索&lt;code&gt;API&lt;/code&gt;可以免费使用，虽然有额度，但对我来说已经足够。但在开通相关服务时需要用到&lt;code&gt;VISA&lt;/code&gt;卡，各种操作实在太麻烦了，只能研究其他方案。结果好几个方案验证都行不通，我都打算放弃了，想老老实实一个个查算了，但昨晚回去又研究了一下，发现&lt;code&gt;Selenium&lt;/code&gt;可以实现这个需求。&lt;/p&gt;
&lt;h1 id=&#34;2-需求描述&#34;&gt;2. 需求描述&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;有一个&lt;code&gt;.txt&lt;/code&gt;文档用来存放关键词，有一个&lt;code&gt;.xlsx&lt;/code&gt;表格用来存放输出的结果，表格格式包含两个表头：关键词、企业名称。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代码读取&lt;code&gt;.txt&lt;/code&gt;文档中的关键词，依次通过必应搜索，将结果中来自爱企查的信息补充到表格的企业全称中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于来自爱企查的结果，去掉后缀“ - 爱企查”，只保留企业名称内容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为来自爱企查的结果通常很精准，所以第一次执行时，得到的相关公司信息基本不会有问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果没有来自爱企查的结果，则可能是关键词信息有误，这种情况下只能默认选择第一个出现的企业名称。待全部匹配输出成功后，再通过人工逐一确认。由于这种情况通常不会很多，所以工作量相对较小。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提供一个变量，可以控制是否要获取来自爱企查的结果。如果设置为“是”，则限制结果必须来自爱企查；否则选择必应搜索第一个出现的企业。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;3-项目地址&#34;&gt;3. 项目地址&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/dstweihao/bing-aiqicha-scraper&#34;&gt;GitHub - dstweihao/bing-aiqicha-scraper&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;4-项目结构&#34;&gt;4. 项目结构&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;bing&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;aiqicha&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scraper&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;├──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keywords&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;         		&lt;span class=&#34;c1&#34;&gt;# 输入关键词文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;├──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;企业名称清单&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xlsx&lt;/span&gt;  		      &lt;span class=&#34;c1&#34;&gt;# 输出文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;└──&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;     					&lt;span class=&#34;c1&#34;&gt;# 主程序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;5-依赖安装&#34;&gt;5. 依赖安装&lt;/h1&gt;
&lt;p&gt;脚本需在Python 3.6及以上版本运行，检查Python版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建虚拟环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Windows: .venv\Scripts\activate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装核心依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;selenium&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;webdriver&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;manager&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pandas&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;openpyxl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中，各依赖说明如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;库名称&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;安装命令&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;selenium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;浏览器自动化控制&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install selenium&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;webdriver-manager&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;自动管理浏览器驱动&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install webdriver-manager&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pandas&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;数据处理和Excel导出&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install pandas&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;openpyxl&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;增强Excel文件支持&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install openpyxl&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;6-脚本代码&#34;&gt;6. 脚本代码&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;./bing-aiqicha-scraper/run.py&lt;/code&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h1 id="1-前言">1. 前言</h1>
<p>因为近期在做一些行业客户群的数据分析，拿到<code>600</code>多条客户信息，需要对其进行分析。由于所在的是<code>To B</code>行业，所以只能先清理掉个人以及没有明确显示企业相关信息的数据。在此之后，需要基于这些企业名单，仔细分析各企业的情况。这可以通过爱企查的批量功能快速导出各企业的情况，但其要求模板中提供的企业名称必须是全称。</p>
<p>因此，我需要把剩下的<code>500</code>多条企业数据的名称一一补全。一开始是打算使用<code>DeepSeek</code>帮我基于关键词把企业名称补全，但反复验证后发现给的数据基本都是瞎编的。无奈之下，我只能一个一个查，具体操作是通过必应搜索关键词，比如“宁德时代”，然后从搜索结果中找到完整的企业名称“宁德时代新能源科技股份有限公司”复制到表格中。</p>
<p>可是，如果只是几十条数据还好，这<code>500</code>多条数据，我要查到猴年马月了，这人工操作实在太繁琐，而且效率太低了，实在忍不了，就想着怎么把这一整个流程实现自动化。</p>
<p>通过<code>DeepSeek</code>查了下，可以使用<code>Python</code>实现，但我没学过<code>Python</code>，不过编程语言嘛，大同小异，就依葫芦画瓢，把教程走一遍。最开始是打算使用必应搜索<code>API</code>实现的，因为必应搜索<code>API</code>可以免费使用，虽然有额度，但对我来说已经足够。但在开通相关服务时需要用到<code>VISA</code>卡，各种操作实在太麻烦了，只能研究其他方案。结果好几个方案验证都行不通，我都打算放弃了，想老老实实一个个查算了，但昨晚回去又研究了一下，发现<code>Selenium</code>可以实现这个需求。</p>
<h1 id="2-需求描述">2. 需求描述</h1>
<ol>
<li>
<p>有一个<code>.txt</code>文档用来存放关键词，有一个<code>.xlsx</code>表格用来存放输出的结果，表格格式包含两个表头：关键词、企业名称。</p>
</li>
<li>
<p>代码读取<code>.txt</code>文档中的关键词，依次通过必应搜索，将结果中来自爱企查的信息补充到表格的企业全称中。</p>
</li>
<li>
<p>对于来自爱企查的结果，去掉后缀“ - 爱企查”，只保留企业名称内容。</p>
</li>
<li>
<p>因为来自爱企查的结果通常很精准，所以第一次执行时，得到的相关公司信息基本不会有问题。</p>
</li>
<li>
<p>如果没有来自爱企查的结果，则可能是关键词信息有误，这种情况下只能默认选择第一个出现的企业名称。待全部匹配输出成功后，再通过人工逐一确认。由于这种情况通常不会很多，所以工作量相对较小。</p>
</li>
<li>
<p>提供一个变量，可以控制是否要获取来自爱企查的结果。如果设置为“是”，则限制结果必须来自爱企查；否则选择必应搜索第一个出现的企业。</p>
</li>
</ol>
<h1 id="3-项目地址">3. 项目地址</h1>
<p><a href="https://github.com/dstweihao/bing-aiqicha-scraper">GitHub - dstweihao/bing-aiqicha-scraper</a></p>
<h1 id="4-项目结构">4. 项目结构</h1>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">bing</span><span class="o">-</span><span class="n">aiqicha</span><span class="o">-</span><span class="n">scraper</span><span class="o">/</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="n">keywords</span><span class="o">.</span><span class="n">txt</span>         		<span class="c1"># 输入关键词文件</span>
</span></span><span class="line"><span class="cl"><span class="err">├──</span> <span class="n">企业名称清单</span><span class="o">.</span><span class="n">xlsx</span>  		      <span class="c1"># 输出文件</span>
</span></span><span class="line"><span class="cl"><span class="err">└──</span> <span class="n">run</span><span class="o">.</span><span class="n">py</span>     					<span class="c1"># 主程序</span>
</span></span></code></pre></div><h1 id="5-依赖安装">5. 依赖安装</h1>
<p>脚本需在Python 3.6及以上版本运行，检查Python版本：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">python</span> <span class="o">--</span><span class="n">version</span>
</span></span></code></pre></div><p>创建虚拟环境：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="o">.</span><span class="n">venv</span>
</span></span><span class="line"><span class="cl"><span class="n">source</span> <span class="o">.</span><span class="n">venv</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>  <span class="c1"># Windows: .venv\Scripts\activate</span>
</span></span></code></pre></div><p>安装核心依赖：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">pip</span> <span class="n">install</span> <span class="n">selenium</span> <span class="n">webdriver</span><span class="o">-</span><span class="n">manager</span> <span class="n">pandas</span> <span class="n">openpyxl</span>
</span></span></code></pre></div><p>其中，各依赖说明如下：</p>
<table>
  <thead>
      <tr>
          <th>库名称</th>
          <th>作用</th>
          <th>安装命令</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>selenium</code></td>
          <td>浏览器自动化控制</td>
          <td><code>pip install selenium</code></td>
      </tr>
      <tr>
          <td><code>webdriver-manager</code></td>
          <td>自动管理浏览器驱动</td>
          <td><code>pip install webdriver-manager</code></td>
      </tr>
      <tr>
          <td><code>pandas</code></td>
          <td>数据处理和Excel导出</td>
          <td><code>pip install pandas</code></td>
      </tr>
      <tr>
          <td><code>openpyxl</code></td>
          <td>增强Excel文件支持</td>
          <td><code>pip install openpyxl</code></td>
      </tr>
  </tbody>
</table>
<h1 id="6-脚本代码">6. 脚本代码</h1>
<p><code>./bing-aiqicha-scraper/run.py</code></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium</span> <span class="kn">import</span> <span class="n">webdriver</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium.webdriver.chrome.service</span> <span class="kn">import</span> <span class="n">Service</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">webdriver_manager.chrome</span> <span class="kn">import</span> <span class="n">ChromeDriverManager</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">selenium.webdriver.common.by</span> <span class="kn">import</span> <span class="n">By</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 配置参数</span>
</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;keywords.txt&#34;</span><span class="p">,</span> <span class="s2">&#34;r&#34;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">search_keywords</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()]</span>
</span></span><span class="line"><span class="cl"><span class="n">output_file</span> <span class="o">=</span> <span class="s2">&#34;企业名称清单.xlsx&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">USE_AIQICHA</span> <span class="o">=</span> <span class="kc">True</span>  <span class="c1"># 模式切换开关：True=仅爱企查结果，False=普通模式</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">bing_search</span><span class="p">(</span><span class="n">keyword</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 动态构建查询URL</span>
</span></span><span class="line"><span class="cl">    <span class="n">query</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&#34;</span><span class="si">{</span><span class="n">keyword</span><span class="si">}</span><span class="s2">+site%3Aaiqicha.baidu.com&#34;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="n">keyword</span>
</span></span><span class="line"><span class="cl">    <span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;https://cn.bing.com/search?q=</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 根据模式选择元素定位器</span>
</span></span><span class="line"><span class="cl">        <span class="n">selector</span> <span class="o">=</span> <span class="s1">&#39;li.b_algo h2 a[href*=&#34;aiqicha.baidu.com&#34;]&#39;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="s1">&#39;li.b_algo h2 a&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">find_element</span><span class="p">(</span><span class="n">By</span><span class="o">.</span><span class="n">CSS_SELECTOR</span><span class="p">,</span> <span class="n">selector</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 统一清理企业名称</span>
</span></span><span class="line"><span class="cl">        <span class="n">clean_name</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; - 爱企查&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;【&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">clean_name</span><span class="p">,</span> <span class="s2">&#34;爱企查&#34;</span> <span class="k">if</span> <span class="n">USE_AIQICHA</span> <span class="k">else</span> <span class="s2">&#34;普通结果&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="ow">not</span> <span class="n">USE_AIQICHA</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 普通模式降级处理：尝试获取第一个结果</span>
</span></span><span class="line"><span class="cl">            <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="n">fallback</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">find_element</span><span class="p">(</span><span class="n">By</span><span class="o">.</span><span class="n">CSS_SELECTOR</span><span class="p">,</span> <span class="s1">&#39;li.b_algo h2 a&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="n">fallback</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; - &#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="s2">&#34;普通结果（待确认）&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="k">return</span> <span class="n">keyword</span><span class="p">,</span> <span class="s2">&#34;未找到&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">keyword</span><span class="p">,</span> <span class="s2">&#34;未找到（爱企查）&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启动浏览器</span>
</span></span><span class="line"><span class="cl"><span class="n">driver</span> <span class="o">=</span> <span class="n">webdriver</span><span class="o">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">service</span><span class="o">=</span><span class="n">Service</span><span class="p">(</span><span class="n">ChromeDriverManager</span><span class="p">()</span><span class="o">.</span><span class="n">install</span><span class="p">()))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 批量处理（修改结果记录部分）</span>
</span></span><span class="line"><span class="cl"><span class="n">results</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">kw</span> <span class="ow">in</span> <span class="n">search_keywords</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">name</span><span class="p">,</span> <span class="n">source</span> <span class="o">=</span> <span class="n">bing_search</span><span class="p">(</span><span class="n">kw</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;关键词&#34;</span><span class="p">:</span> <span class="n">kw</span><span class="p">,</span> 
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;企业全称&#34;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;来源&#34;</span><span class="p">:</span> <span class="n">source</span>  <span class="c1"># 新增来源标识列</span>
</span></span><span class="line"><span class="cl">    <span class="p">})</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;[</span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2">] </span><span class="si">{</span><span class="n">kw</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 保存结果（增加列排序）</span>
</span></span><span class="line"><span class="cl"><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">results</span><span class="p">)[[</span><span class="s2">&#34;关键词&#34;</span><span class="p">,</span> <span class="s2">&#34;企业全称&#34;</span><span class="p">,</span> <span class="s2">&#34;来源&#34;</span><span class="p">]]</span><span class="o">.</span><span class="n">to_excel</span><span class="p">(</span><span class="n">output_file</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">driver</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span>
</span></span></code></pre></div><h1 id="7-运行验证">7. 运行验证</h1>
<p>在网上随机找了一些企业进行验证，关键词示例如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl">极光动力
</span></span><span class="line"><span class="cl">上海明我
</span></span><span class="line"><span class="cl">易能数字能源
</span></span></code></pre></div><p>仅爱企查结果：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502221542457.png"></p>
<p>普通模式：</p>
<p><img loading="lazy" src="https://dstweihao-1300388255.cos.ap-guangzhou.myqcloud.com/images/202502221545729.png"></p>
<h1 id="8-真实应用">8. 真实应用</h1>
<p>在真实使用过程中，可以结合企业微信文档进行操作。首先运行第一次查询，拿到“仅爱企查结果”。然后，通过爱企查的批量查询功能，将第一次查询得到的全部数据导入，进行批量查询。接着，从爱企查导出的表格中，筛选出“经营状态”为<code>--</code>的条目（这些通常是无效或无法查询到的企业信息），并将这些条目复制到爱企查的导入模板中，再进行第二次导入，这次可以使用普通模式。这样基本能简化很多工作量。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
