电子产业一站式赋能平台

PCB联盟网

搜索
查看: 69|回复: 0
收起左侧

太强了!平时需要三四天的工作量使用豆包AI直接干到10分钟搞定

[复制链接]

26

主题

26

帖子

766

积分

二级会员

Rank: 2

积分
766
发表于 2025-2-8 12:04:00 | 显示全部楼层 |阅读模式
老wu最近在查阅一份技术资料,该资料内容仅提供在线的网页浏览方式,并且需要通过账号登录之后才有权限进行内容浏览。每次浏览都需要登录嫌麻烦不说,老wu还担心后续账号权限被撤销就再也无法查阅内容了,所以,将在线内容保存到本地才是王道。好在该资料对内容的复制不做任何限制,将网页内容复制并粘贴到老wu目前在用的Typora这款markdown编辑工具中,可以很好保持原文的图文排版,并且图片也可以一并缓存到本地。

但问题是,该资料的网页页面太多了,有好几千个页面,手动复制粘贴感觉太枯燥,效率也不高,需要好几天才能完成,这时老wu自然就想到用爬虫来抓取内容。当然,老wu之前只知道有爬虫可以抓取内容,老wu的博客网站就经常被各种爬虫把CPU负载拉满,所以之前一直关注的是如何防范爬虫,至于如何使用爬虫来抓取内容倒是没怎么研究过。

按以往的模式,在没有经验的情况下,用python开发一款爬虫程序,老wu通常会去谷歌上搜索现成的代码,这些代码要么是github上的项目,要么是各种论坛或者博客的分享。当然,别人分享的代码即使可以顺利运行,其功能也不一定适合自己的需求,所以搜索代码,修改代码然后测试,然后再继续搜索和验证,一番折腾下来估计得花三四天的时间吧。

不过现在不一样了,现在有了豆包的AI编程,老wu只需要把程序的逻辑需求给到豆包AI,豆包AI在短短几秒内就能给出完整的可执行的代码,简直就是革命性的生产力提升!

以下是老wu调戏,不对,是调试豆包AI的过程,也作为老wu的备忘录记录下。

akol1fjv3sf6402420548.png

akol1fjv3sf6402420548.png


首先,老wu投喂给豆包AI提示词:

“请帮我用 Python 生成一个网页内容爬取程序,网页的链接为https://abc.com/browse_item.php?id=1逐步递增到https://abc.com/browse_item.php?id=8216,提取内容为markdown格式,特别提示:该网站需要登录之后才有权限浏览内容,登录的链接为:https://abc.com/Login.php,能否在爬取之前先通过浏览器进行登录,然后使用浏览器登录后的会话进行内容的爬取,提取所有网页的内容归档到同一个markdown文件中,文件名为doc.md,需要提取的是网页中的#workingarea选择器内的内容,其中的#workingarea > div.item_question中的内容添加H3标题格式,跳过#workingarea > div.item_params的内容无需提取,提取#workingarea > div.item_answer内的内容为正文部分。”

然后豆包给出了解决方案:

要实现这个需求,我们可以使用selenium库来模拟浏览器登录,并获取登录后的会话,然后使用BeautifulSoup库来解析网页内容。以下是具体的实现步骤和代码:

安装依赖库

首先,确保你已经安装了所需的库:

  • pip install selenium beautifulsoup4另外,你还需要下载对应浏览器的驱动,例如 Chrome 浏览器需要下载 ChromeDriver,下载地址:ChromeDriver 下载,下载后将驱动的可执行文件路径配置到系统环境变量中。

    ps:这里下载的ChromeDriver需要与您电脑上安装的Chrome 浏览器的主版本号保持一致,比如老wu写这篇文章时ChromeDriver的Last updated版本为133.0.6943.53,那么您电脑上Chrome主版本号也需要更新到对应的133.xxx版本。

    代码实现

  • import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Servicefrom bs4 import BeautifulSoup
    # 配置 ChromeDriver 路径chrome_driver_path = 'path/to/chromedriver'  # 请替换为你的 ChromeDriver 实际路径service = Service(chrome_driver_path)driver = webdriver.Chrome(service=service)
    # 登录页面 URLlogin_url = 'https://abc.com/Login.php'driver.get(login_url)
    # 等待用户手动登录input("请在浏览器中完成登录,登录完成后按回车键继续...")
    # 初始化 Markdown 内容markdown_content = ""
    # 循环爬取网页内容for id in range(1, 8216):    url = f'https://abc.com/browse_item.php?id={id}'    driver.get(url)    time.sleep(2)  # 等待页面加载
        # 获取页面源代码    page_source = driver.page_source    soup = BeautifulSoup(page_source, 'html.parser')
        # 找到 workingarea 元素    working_area = soup.find('div', id='workingarea')    if working_area:        # 提取问题        question_div = working_area.find('div', class_='item_question')        if question_div:            question = question_div.get_text(strip=True)            markdown_content += f'### {question}
    '
            # 提取答案        answer_div = working_area.find('div', class_='item_answer')        if answer_div:            answer = answer_div.get_text(strip=True)            markdown_content += f'{answer}
    '
    # 关闭浏览器driver.quit()
    # 将 Markdown 内容保存到文件with open('doc.md', 'w', encoding='utf-8') as f:    f.write(markdown_content)
    print("爬取完成,内容已保存到 doc.md 文件中。")
    代码说明
  • 登录部分:使用selenium打开登录页面,等待用户手动完成登录操作,用户登录完成后按回车键继续。
  • 循环爬取:使用for循环遍历id从 1 到 8216的所有网页,依次打开网页并等待页面加载。
  • 内容提取:使用BeautifulSoup解析页面源代码,找到#workingarea元素,提取#workingarea > div.item_question和#workingarea > div.item_answer的内容,并添加相应的 Markdown 格式。
  • 保存文件:将提取的 Markdown 内容保存到doc.md文件中。
    [/ol]
    注意事项
  • 请将chrome_driver_path替换为你实际的 ChromeDriver 路径。
  • 由于网站可能存在反爬机制,爬取过程中可能会遇到验证码或其他限制,需要根据实际情况进行处理。
  • 爬取过程中可能会因为网络问题或页面加载缓慢导致提取内容失败,你可以适当调整time.sleep()的时间。

    豆包给出的代码可以运行,但获取的结果老wu发现有点问题,这是老wu给的提示词不够准确,接着老wu再次提供了修正后的提示词:

    “修改一下上边的需求,需要提取的是网页中的[td]内的内容,其中的 提取为纯文本,并转换为markdown的H3标题格式,跳过的内容无需提取,提取内的内容为正文部分并保留原来html格式。其中的图片的src如果是相对路径的,如src="/images/11.png",则替换为绝对路径如:“https://abc.com/images/11.png”,提取内的内容为正文部分并保留原来html格式。”

    然后豆包给出了修改后的代码,这回就完美解决了老wu的需求,包括程序的运行验证总共花了不到10分钟的时间搞定。ps:当然,这不包括实际抓取八千多页内容的时间,因为程序里设置了“time.sleep(2) # 等待页面加载”的等待逻辑,同时也可以避免触发服务器那边的反爬虫机制吧。

    豆包根据修改后的提示词给出了修正后的代码:

  • printf("hello world!");import timefrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom bs4 import BeautifulSoup
    # 请将此路径替换为你本地 ChromeDriver 的实际路径chrome_driver_path = 'path/to/chromedriver'service = Service(chrome_driver_path)driver = webdriver.Chrome(service=service)
    # 登录页面的 URLlogin_url = 'https://abc/Login.php'driver.get(login_url)
    # 等待用户手动完成登录操作input("请在浏览器中完成登录,登录完成后按回车键继续...")
    # 初始化用于存储 Markdown 内容的字符串markdown_content = ""# 基础 URL,用于将图片的相对路径转换为绝对路径base_url = "https://abc.com"
    # 循环爬取从 id=1 到 id=8216 的网页内容for id in range(1, 8216):    url = f'https://abc/browse_item.php?id={id}'    driver.get(url)    # 等待页面加载完成    time.sleep(2)
        # 获取当前页面的源代码    page_source = driver.page_source    # 使用 BeautifulSoup 解析页面源代码    soup = BeautifulSoup(page_source, 'html.parser')
        # 查找 td 标签且 id 为 workingarea 的元素    working_area = soup.find('td', id='workingarea')    if working_area:        # 提取问题部分,转换为纯文本并添加 Markdown 的 H3 标题格式        question_div = working_area.find('div', class_='item_question')        if question_div:            question_text = question_div.get_text(strip=True)            markdown_content += f'### {question_text}
    '
            # 提取答案部分,处理图片的相对路径并保留 HTML 格式        answer_div = working_area.find('div', class_='item_answer')        if answer_div:            for img in answer_div.find_all('img'):                src = img.get('src')                if src and src.startswith('/'):                    img['src'] = base_url + src            answer_html = str(answer_div)            markdown_content += f'{answer_html}
    '
            # 提取 r_linx 部分,处理图片的相对路径并保留 HTML 格式        r_linx_div = working_area.find('div', class_='r_linx')        if r_linx_div:            for img in r_linx_div.find_all('img'):                src = img.get('src')                if src and src.startswith('/'):                    img['src'] = base_url + src            r_linx_html = str(r_linx_div)            markdown_content += f'{r_linx_html}
    '
    # 关闭浏览器driver.quit()
    # 将提取并处理好的 Markdown 内容保存到文件中with open('doc.md', 'w', encoding='utf-8') as f:    f.write(markdown_content)
    print("爬取完成,内容已保存到 doc.md 文件中。")

    然后,我们还可以让豆包对刚才生成的代码给出详细的分析,比如我们后续可以继续投喂提示词,如:

    “基于最后一次的代码给出脑图”


    jfvoh230htg6402420648.png

    jfvoh230htg6402420648.png




    写在最后

    AI已来,其正以前所未有的速度渗透到我们生活和工作的方方面面,比如这次,老wu不用敲一行代码也不用任何的搜索,就能让AI生成完全符合老wu需求的python爬虫程序,感觉比老wu自己写的程序都好用。老wu也真切地感受到了AI浪潮带来的革命性的冲击,焦虑与迷茫也随之而来,也就是担心自己会被 AI 替代,毕竟,AI 在代码生成、测试等方面展现出了强大的能力,PCB layout目前还好,但各大EDA厂商也正在加大力度开发基于AI的PCB Layout功能。

    焦虑是面对变革时的正常情绪反应,克服焦虑的关键在于积极主动地去应对 AI 带来的变化。就好像百年前的黄包车夫面对汽车时代的来临,你必须调整心态和技能去适应新的时代的来临,比如黄包车夫可以考取驾照后成为出租车司机,并利用自己对城市道路熟悉的优势,地图上没有标注的小巷子你都能给客人带到,

    5mbe4csqsa52_062420748.png

    5mbe4csqsa52_062420748.png

      照样不会被时代所淘汰。

    AI 时代既充满了挑战,也蕴藏着无限机遇,调整心态、拥抱 AI 是顺应时代发展的必然选择,共勉。
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表