多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

如何使用 Python 抓取 Bing 搜索结果

如何使用 Python 抓取 Bing 搜索结果 Bing 抓取是指从 Bing 的搜索结果页面 (SERP) 中自动提取排名、广告、摘要和搜索功能。由于微软已于 2025 年停用所有官方 Bing 搜索 API因此抓取和第三方 SERP API 是目前以编程方式访问这些数据的主要途径。本指南涵盖了使用 Requests 和 Beautiful Soup 等库的 Python 方法。为什么要抓取 Bing 搜索结果虽然谷歌常常占据主导地位但必应也有其独特的优势值得关注尤其对于那些挖掘独特数据的人来说。由于必应的内容种类更丰富、搜索结果更清晰、区域相关性更强抓取必应搜索结果可以帮助你发现其他地方可能错过的洞察。Bing 的算法经常会推送一些与 Google 不同的页面这在研究竞争对手或寻找非主流内容时尤其有用。例如研究小众行业博客可能会在 Bing 上发现一些从未进入 Google 前十的宝藏网站。由于很少有公司会主动针对必应进行搜索引擎优化因此其搜索结果受关键词堆砌或内容农场的影响也较小。这意味着您更有可能获得真正有价值的信息页面而不是充斥着标题党和大量联盟营销文章的海洋。最后一个好处是Bing 是微软设备的默认搜索引擎这使其在特定地区和企业环境中拥有更强的市场地位。如果您正在分析美国或企业用户的行为Bing 或许能比 Google 提供更清晰的洞察。简而言之Bing 不仅仅是“另一个”搜索引擎——它是一个宝贵的数据源具有独特的优势尤其是在您寻找新的视角、更清晰的结果或特定区域的见解时。抓取 Bing 搜索结果的工具和方法既然你已经有了充分的理由和明确的使用场景现在就该讨论工具了。根据你的目标、预算和技术水平有几种方法可以抓取 Bing 搜索结果。以下是一些最常用的方法手动抓取数据。将搜索结果复制粘贴到电子表格中或许适用于一次性研究但很快就会变得难以持续。这种方法速度慢、容易出错而且绝对称不上对开发者友好。它非常适合演示但对于大规模数据处理来说却糟糕透顶。PythonRequests Beautiful Soup。对于简单的 HTML 页面Python 的 Requests 和 Beautiful Soup 库轻量级且实用。这种方法非常适合无需 JavaScript 渲染的快速脚本例如从基本搜索结果页面中抓取标题、URL 和代码片段。Playwright是一款能够自动化整个浏览器会话的工具非常适合抓取大量 JavaScript 代码或动态内容。它也适用于更高级的用例例如提取富文本片段或模拟用户在页面上的真实行为。当大规模或频繁地抓取 Bing 数据时使用代理服务器对于避免被屏蔽至关重要。代理服务器可以隐藏您的 IP 地址并将请求分散到多个服务器位置从而使 Bing 更难检测到抓取活动。 对于这类场景IPFoxy提供动态住宅代理等多种代理类型覆盖多个国家并支持IP轮换代理可根据抓取频率和目标区域灵活选择代理资源提升 Bing 数据采集的稳定性。如何使用 Python 抓取 Bing 搜索结果设置您的环境既然你已经了解了抓取 Bing 搜索结果的原因和方法现在就该搭建你的 Python 环境了。我们将从 Requests 和 Beautiful Soup 开始然后再使用 Playwright 来创建更动态的页面。以下是入门指南1.安装 Python。首先请确保您的计算机上已安装 Python 3.7 或更高版本。您可以从 Python 官方网站下载。要检查是否已安装请运行python --版本2.创建并激活虚拟环境推荐。使用虚拟环境隔离您的爬虫项目是一种很好的做法可以避免代码混乱和库冲突python -m venv bing - scraper - env source bing - scraper - env / bin / activate # 在 Windows 系统上使用bing-scraper-env\Scripts\activate3.安装所需的库。您需要一些 Python 包才能开始pip install requests beautifulsoup4 playwright4.安装浏览器二进制文件。安装 Playwright 后运行以下命令安装必要的浏览器二进制文件剧作家安装5.测试你的配置。这里有一个简单的脚本来验证一切是否正常运行。该脚本使用 Requests 和 Beautiful Soup 来获取和解析 Bing 的首页导入请求 from bs4 import BeautifulSoup response requests.get ( https://www.bing.com ) soup BeautifulSoup ( response.text , html.parser ) 标题汤.标题.字符串 print ( Bing 页面标题 , title )使用 Python 进行基本的 Bing 搜索抓取在深入探讨浏览器自动化之前我们先从基础知识入手——发送 HTTP 请求并解析 HTML 响应。这种方法非常适合简单的网页抓取任务尤其适用于不涉及大量 JavaScript 的情况。我们将使用 Python 的 Requests 库来获取页面并使用 Beautiful Soup 来提取数据。请注意如果 Bing 检测到自动访问它可能会返回不同的 HTML 或完全阻止请求因此这种方法最适合小规模测试或者与轮换用户代理标头和代理结合使用。执行以下操作定义先决条件。代理凭据、用户代理标头、查询和目标 URL 都在此处写入稍后将在脚本中使用。发出请求。该脚本通过代理服务器发送一个 HTTP GET 请求并附带用户代理信息。这确保请求不会被检测到并允许您多次重复发送该请求。查找标题、URL 和描述。一旦找到所有容器脚本就会循环遍历它们并查找标题h2、URLhref和描述p。解析响应。Requests 获取 HTML 页面后Beautiful Soup 会介入分析并解析所需信息。在这里它会查找所有 带有 class 为“b_algo”的li元素每个搜索结果都位于该容器中。打印结果。在循环内部打印结果然后重复此过程直到找到搜索结果页面中的所有结果。重要提示使用代理时您的 IP 地址位置可能会影响 Bing 的语言和地区设置。与 Google 不同如果查询内容为英文但您的代理服务器显示位于法国或德国等地区Bing 可能不会返回任何结果。为避免这种情况您可以使用通用搜索词例如品牌名称您可以通过添加 setlang 和cc国家/地区代码参数手动设置搜索请求中的语言和地区提取搜索结果排名排名位置是SEO和SERP监控项目能够收集的最有价值的数据点之一。了解目标页面排名第一还是第二十五至关重要。这有助于您监控竞争对手了解关键词表现并衡量SEO活动在一段时间内的实际效果。获取排名的最简单方法是 在遍历搜索结果时使用 Python 的enumerate()函数。它会自动为页面上返回的每个结果分配一个位置编号。对于rank 结果 在enumerate ( results , start 1 ) : title result.find ( h2 ) link title.find ( a ) [ href ] if title else N/A print ( f排名{ rank } ) print ( fURL: { link } ) print ( - * 50 )如果您正在处理大型项目最佳方案是将排名提取与 Bing 的分页参数 first结合使用以获得更佳结果。Bing 每页显示 10 条结果因此您可以计算跨多页的连续排名。为此只需根据页码偏移量调整起始排名即可。这样您就可以构建完整的排名数据集并分析超出第一页结果范围的可见性。使用 XPath 选择器实现更强大的数据抓取我们在示例中使用了 CSS 选择器例如li.b_algo来查找 Bing 搜索结果。CSS 选择器非常实用它们简单易用而且可能是获取所需数据的最快方法。然而它们也可能不太可靠。这种情况通常发生在 Bing 更改类名或页面结构时即使这种更改非常小。因此最好不要仅仅通过类名来定位元素。应该使用 XPath根据元素在文档结构中的位置和关系来定位它们。这种方法可以增强爬虫在面对变化时的响应能力。同时开发者在从复杂页面中提取数据时也拥有更大的灵活性。下面的 XPath 表达式用于获取 Bing 搜索结果的标题和描述title_xpath //li[contains(class,b_algo)]//h2/a snippet_xpath //li[contains(class,b_algo)]//div[classb_caption]/p 许多 Python 库都支持 XPath 包括 lxml 。这使得你可以直接从解析后的H​​TML中提取元素 。以下示例使用 XPath 表达式在Bing 中搜索 “python” 并提取自然搜索结果的标题 导入请求 从lxml 导入html url https://www.bing.com/search?qpython response requests.get (​​ 网址 标题 { User-Agent : ( Mozilla/5.0 (Windows NT 10.0; Win64; x64) “AppleWebKit/537.36KHTML如 Gecko” Chrome/137.0.0.0 Safari/537.36 } tree html.fromstring ( response.text )​​​​ 标题 tree.xpath (​​ //li[contains(class,b_algo)]//h2/a/text() 对于标题中的每个标题 打印标题这并不意味着你不能使用 CSS 选择器。恰恰相反你可以用它们来完成许多网页抓取任务。然而XPath 的定位能力更强。通常来说当你进行大规模网页抓取项目或抓取具有复杂 HTML 结构的页面时XPath 是你的最佳选择。抓取 Bing 数据的高级技巧和常见挑战随着您扩展 Bing 抓取设置很快就会发现仅使用简单的 HTTP 请求和 HTML 解析存在局限性。Bing 的搜索结果页面包含动态元素、分页内容和机器人检测机制这使得仅使用 Requests 和 Beautiful Soup 进行大规模抓取变得不可靠。而 Playwright 正是解决这一问题的良方它提供了一个浏览器自动化层其行为更接近真实用户。以下是 Playwright 是抓取 Bing 数据更佳选择的原因JavaScript 渲染。Bing 使用 JavaScript 加载某些富媒体元素例如知识面板和新闻卡片。Playwright 像真正的浏览器一样执行 JS让您可以抓取完整的渲染页面而不仅仅是原始 HTML。分页控制。与基本的网页抓取不同网页抓取的分页可能不一致甚至完全失败Playwright 允许您点击“下一页”按钮并动态加载包含完整浏览器上下文的其他搜索结果页面。模拟人类行为。Playwright 支持键盘输入、滚动、鼠标移动和延迟使您的机器人能够模仿真实用户帮助您避免被检测到和封禁。更好的验证码规避能力。虽然并非万无一失但 Playwright 可以通过更像浏览器而非机器人的方式来绕过 Bing 的一些轻度反机器人措施。屏幕截图和调试功能。Playwright 可以捕获屏幕截图甚至录制抓取会话的视频从而更容易调试 DOM 中的变化或抓取失败的问题。总结使用 Python 抓取 Bing 搜索结果开启了无限可能——从挖掘区域洞察到在竞争不那么激烈的搜索领域追踪竞争对手。借助 Python 的 Requests、Beautiful Soup和Playwright等工具您可以找到丰富的选择来满足您的需求并进行扩展。
返回列表