太强了!平时需要三四天的工作量使用豆包AI直接干到10分钟搞定
但问题是,该资料的网页页面太多了,有好几千个页面,手动复制粘贴感觉太枯燥,效率也不高,需要好几天才能完成,这时老wu自然就想到用爬虫来抓取内容。当然,老wu之前只知道有爬虫可以抓取内容,老wu的博客网站就经常被各种爬虫把CPU负载拉满,所以之前一直关注的是如何防范爬虫,至于如何使用爬虫来抓取内容倒是没怎么研究过。
按以往的模式,在没有经验的情况下,用python开发一款爬虫程序,老wu通常会去谷歌上搜索现成的代码,这些代码要么是github上的项目,要么是各种论坛或者博客的分享。当然,别人分享的代码即使可以顺利运行,其功能也不一定适合自己的需求,所以搜索代码,修改代码然后测试,然后再继续搜索和验证,一番折腾下来估计得花三四天的时间吧。
不过现在不一样了,现在有了豆包的AI编程,老wu只需要把程序的逻辑需求给到豆包AI,豆包AI在短短几秒内就能给出完整的可执行的代码,简直就是革命性的生产力提升!
逐步递增到,提取内容为markdown格式,特别提示:该网站需要登录之后才有权限浏览内容,登录的链接为:,能否在爬取之前先通过浏览器进行登录,然后使用浏览器登录后的会话进行内容的爬取,提取所有网页的内容归档到同一个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,下载地址:,下载后将驱动的可执行文件路径配置到系统环境变量中。
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from bs4 import BeautifulSoup # 配置 ChromeDriver 路径 chrome_driver_path = 'path/to/chromedriver' # 请替换为你的 ChromeDriver 实际路径 service = Service(chrome_driver_path) driver = webdriver.Chrome(service=service) # 登录页面 URL login_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}\n\n' # 提取答案 answer_div = working_area.find('div', class_='item_answer') if answer_div: answer = answer_div.get_text(strip=True) markdown_content += f'{answer}\n\n' # 关闭浏览器 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
文件中。
注意事项
-
请将
chrome_driver_path
替换为你实际的 ChromeDriver 路径。 -
由于网站可能存在反爬机制,爬取过程中可能会遇到验证码或其他限制,需要根据实际情况进行处理。
-
爬取过程中可能会因为网络问题或页面加载缓慢导致提取内容失败,你可以适当调整
time.sleep()
的时间。
豆包给出的代码可以运行,但获取的结果老wu发现有点问题,这是老wu给的提示词不够准确,接着老wu再次提供了修正后的提示词:
“修改一下上边的需求,需要提取的是网页中的<td id=”workingarea”>内的内容,其中的 <div class=”item_question”>提取为纯文本,并转换为markdown的H3标题格式,跳过<div class=”item_params”>的内容无需提取,提取<div class=”item_answer”>内的内容为正文部分并保留原来html格式。其中的图片的src如果是相对路径的,如src=”/images/11.png”,则替换为绝对路径如:“https://abc.com/images/11.png”,提取<div class=”r_linx”>内的内容为正文部分并保留原来html格式。”
豆包根据修改后的提示词给出了修正后的代码:
import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from bs4 import BeautifulSoup # 请将此路径替换为你本地 ChromeDriver 的实际路径 chrome_driver_path = 'path/to/chromedriver' service = Service(chrome_driver_path) driver = webdriver.Chrome(service=service) # 登录页面的 URL login_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}\n\n' # 提取答案部分,处理图片的相对路径并保留 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}\n\n' # 提取 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}\n\n' # 关闭浏览器 driver.quit() # 将提取并处理好的 Markdown 内容保存到文件中 with open('doc.md', 'w', encoding='utf-8') as f: f.write(markdown_content) print("爬取完成,内容已保存到 doc.md 文件中。")
AI已来,其正以前所未有的速度渗透到我们生活和工作的方方面面,比如这次,老wu不用敲一行代码也不用任何的搜索,就能让AI生成完全符合老wu需求的python爬虫程序,感觉比老wu自己写的程序都好用。老wu也真切地感受到了AI浪潮带来的革命性的冲击,焦虑与迷茫也随之而来,也就是担心自己会被 AI 替代,毕竟,AI 在代码生成、测试等方面展现出了强大的能力,PCB Layout目前还好,但各大EDA厂商也正在加大力度开发基于AI的PCB Layout功能。
焦虑是面对变革时的正常情绪反应,克服焦虑的关键在于积极主动地去应对 AI 带来的变化。就好像百年前的黄包车夫面对汽车时代的来临,你必须调整心态和技能去适应新的时代的来临,比如黄包车夫可以考取驾照后成为出租车司机,并利用自己对城市道路熟悉的优势,地图上没有标注的小巷子你都能给客人带到,照样不会被时代所淘汰。