写点什么

AI+ 代理 IP 手把手教你爬取某度

作者:袁袁袁袁满
  • 2025-04-18
    四川
  • 本文字数:4212 字

    阅读完需:约 14 分钟

一、引言

最近 Deepseek 火遍大江南北,很多朋友都会用它制作一些小型程序商用,其中不乏有网络爬虫。以前对于中小企业来说,“写个爬虫”似乎是一件遥不可及的事情。


不过现在,随着人工智能技术的不断进步,低代码甚至零代码的数据采集解决方案已经不再是梦想。接下来就让我们一起探索如何借助 AI 助手 DeepSeek 自动生成爬虫代码,再结合亮数据强大的网页解锁和搜索引擎爬虫功能,轻松实现对某度新闻搜索结果的高效抓取。

二、使用 DeepSeek 爬取某度搜索结果

在开始前,我们先一起观察一下搜索页。当我们输入关键字进行搜索时,URL 部分会负责传递搜索参数。比如说我们想搜索一个关键词。注意观察 URL 部分,显然 word 负责指定搜索关键字。



当我们翻页之后会发现多了一个参数,每次翻页会让 pn 值增加 10。这样我们就搞清楚了 URL 的主要构成。


事实上其他参数也有各自的功能,这里我们用一个表格罗列其中的一部分。



最好的办法就是复制一个真实的 URL,在里面挖空留出我们要设置的参数部分。之后使用这个 URL 让 Deepseek 生成爬虫程序。在 Deepseek 中输入如下提示词:


你是一个Python编程专家,要完成一个百度搜索页面爬取的Python脚本,具体任务如下:
1. 解析网页:https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word={keyword}&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&goods_entry_switch=1&rsv_dl=news_b_pn&pn={pagenumber}其中{keyword}的值由用户输入决定;{pagenumber}的值从0开始,以10递增,到40结束。
2. 解析网页:定位其中所有class="result-op c-container xpath-log new-pmd"的div标签,定位div标签中class="news-title-font_1xS-F"的a标签,提取其href属性值作为网页下载URL,提取其aria-label属性值,作为网页文件名;定位div标签中class="c-font-normal c-color-text"的span标签,作为网页的内容摘要;
3. 网页下载URL、网页文件名、网页的内容摘要都写入到Excel文件中,Excel文件保存到与本程序相同的文件夹中,文件名为{keyword}的值加excel文件后缀。
4. 注意:每一步都要输出信息到屏幕上;每爬取一个网址后,随机暂停3-5秒;每下载一个网页后,随机暂停3-6秒;为这个程序设置请求标头:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0Accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4,ru;q=0.2Accept-Encoding: gzip, deflate, br, zstdConnection: keep-aliveSec-Fetch-Dest: imageSec-Fetch-Mode: no-corsSec-Fetch-Site: same-origin
复制代码


将提示词发送给 Deepseek 很快就可以得到结果,这样我们就初步完成了任务。



以下是 Deepseek 生成的代码:


import requestsfrom bs4 import BeautifulSoupimport pandas as pdimport timeimport randomimport osfrom fake_useragent import UserAgent
def get_user_agent(): return { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0', 'Accept': 'image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4,ru;q=0.2', 'Accept-Encoding': 'gzip, deflate, br, zstd', 'Connection': 'keep-alive', 'Sec-Fetch-Dest': 'image', 'Sec-Fetch-Mode': 'no-cors', 'Sec-Fetch-Site': 'same-origin' }
def scrape_baidu_news(keyword): print(f"开始爬取关键词: {keyword}") # 准备存储数据的列表 data = [] # 从0开始,每次增加10,直到40 for pn in range(0, 41, 10): print(f"正在处理第 {pn//10 + 1} 页...") # 构造URL url = f"https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word={keyword}&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&goods_entry_switch=1&rsv_dl=news_b_pn&pn={pn}" print(f"构造的URL: {url}") try: # 发送请求 headers = get_user_agent() response = requests.get(url, headers=headers) response.raise_for_status() print(f"成功获取第 {pn//10 + 1} 页内容") # 解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 查找所有结果项 results = soup.find_all('div', class_='result-op c-container xpath-log new-pmd') print(f"在第 {pn//10 + 1} 页找到 {len(results)} 条结果") for result in results: # 提取标题和URL title_tag = result.find('a', class_='news-title-font_1xS-F') if title_tag: url = title_tag.get('href', '') title = title_tag.get('aria-label', '无标题') # 提取摘要 abstract_tag = result.find('span', class_='c-font-normal c-color-text') abstract = abstract_tag.get_text(strip=True) if abstract_tag else '无摘要' # 添加到数据列表 data.append({ 'URL': url, '标题': title, '摘要': abstract }) print(f"提取到结果: {title}") # 随机暂停3-6秒 sleep_time = random.uniform(3, 6) print(f"等待 {sleep_time:.2f} 秒...") time.sleep(sleep_time) # 随机暂停3-5秒 sleep_time = random.uniform(3, 5) print(f"页面处理完成,等待 {sleep_time:.2f} 秒...") time.sleep(sleep_time) except Exception as e: print(f"处理第 {pn//10 + 1} 页时出错: {str(e)}") continue # 保存到Excel if data: df = pd.DataFrame(data) excel_filename = f"{keyword}.xlsx" df.to_excel(excel_filename, index=False) print(f"数据已保存到 {excel_filename}") # 获取文件完整路径 file_path = os.path.abspath(excel_filename) print(f"文件保存路径: {file_path}") else: print("没有提取到任何数据,不创建Excel文件")
if __name__ == "__main__": keyword = input("请输入要搜索的关键词: ") scrape_baidu_news(keyword)
复制代码

三、使用网页解锁器

然而事情并没有这么简单,我们多运行几次就会发现网页被百度拦截了。这是因为我们访问太频繁且行为模式非常单一,这时候我们就需要使用一些工具绕过拦截。亮数据自研的黑科技小工具,让我们轻松应对网站拦截:亮数据官网



这次我们要使用的是网页解锁 API。登录以后,在控制面板的代理 &抓取基础设施中,选择网页解锁器进入选购页。



之后填写通道名称。在下方可以选择一些辅助工具,这里我们暂时保持默认。点击添加开始使用。



在详细信息中就可以拿到我们连接代理服务器的主机、端口号、用户名、密码,在右侧有相应的代码样例。注意在这里一定要将本机 IP 添加到白名单中以确保能正常连接服务器。



基于上面的配置,我们需要将获取页面的请求先提交给亮数据服务器,等待接收它返回的页面后再进行操作。所以我们要在爬虫程序中修改两个位置。首先要在最上方添加代理信息。


proxy = 'http://brd-customer-hl_a0a48734-zone-baidu:tt5c75qi712k@brd.superproxy.io:33335'proxies = {'http': proxy,         'https': proxy}
复制代码


之后在 scrape_baidu_news()函数中将发送请求的代码 response = requests.get(url, headers=headers)替换为 response = requests.get(url, headers=headers, proxies=proxies)即可接入亮数据网页解锁器。

四、零基础编程爬虫

什么,你说你一点编程都不会?那也没问题,只要使用亮数据搜索引擎爬虫即可体验零代码编程。搜索引擎爬虫(SERP)是亮数据针对各大搜索引擎推出的爬虫工具,它能够直接将搜索结果以 json 格式返回。



接下来让我们一起来配置一下。同样是登录后进入控制面板,在代理 &抓取基础设施中选择搜索引擎爬虫 SERP 进入选购。



在选购页填写通道名称,下方暂时保持默认。点击添加即可开始使用。



我们可以像网页解锁器那样使用 SERP,也可以在操作平台中进行零代码编程。进入操作平台,在下方即可开始定制搜索内容。我们可以切换搜索引擎,设置搜索区域、语言、内容类型、分页、设备等等参数来满足需求。输入搜索内容,点击搜索即可预览结果。在左侧是实际的搜索结果页,右侧则是相应的 json 文件内容。



在调整完毕后点击底部的生成 API 代码,即可生成相应的程序以爬取搜索结果,是不是很方便呢?


五、总结

通过上面的步骤,我们不仅了解如何使用 DeepSeek 轻松生成爬虫代码,实现了搜索结果的提取与保存。之后,我们引入亮数据的网页解锁器,有效解决了频繁访问引发的封禁问题,保障了爬虫运行的稳定性和连续性。


对于完全不具备编程基础的中小企业,亮数据提供的搜索引擎爬虫工具让“零代码爬虫”成为现实,只需简单配置即可获取结构化搜索结果。这不仅降低了爬虫技术的门槛,也为更多人打开了数据智能的大门。如果你也曾因编程门槛或反爬机制望而却步,不妨试试这套“AI+低代码”的组合方式,也许下一次的数据采集项目,你只需动动手指,就能轻松搞定。


目前亮数据全线 API 类产品七五折,包括网页抓取 API、网页解锁器 API 和搜索引擎结果页 API,使用促销代码 APIS25 即可享受优惠!不仅如此,亮数据目前仍有首次充值 1 比 1 赠送。充多少送多少,最高送 500 美金,并可与其它所有促销叠加使用,非常实惠。感兴趣的小伙伴不妨自行体验一下:亮数据官网

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022-04-28 加入

还未添加个人简介

评论

发布
暂无评论
AI+代理IP手把手教你爬取某度_AI_袁袁袁袁满_InfoQ写作社区