You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和BeautifulSoup从Bing提取链接时遇空值问题

用Python+BeautifulSoup提取Bing搜索URL的问题解决办法

我来帮你排查下问题哈,你的代码里有两个关键问题导致urls变量为空,咱们一步步来修正:

1. 请求参数传递错误

你调用requests.get的时候,把查询参数payload直接放在了第二个参数位置,但requests.get的第二个参数是params(专门用来传递GET请求的查询参数),你之前的写法会把payload当成data参数(这是POST请求用的),导致请求的URL不对,返回的页面可能不是你要的搜索结果页,自然找不到目标标签。

正确的请求写法应该是:

req = requests.get('https://www.bing.com/search', params=payload, headers=headers)

2. Bing页面结构已更新

你要找的<div class="b_title">这个类名现在已经不是Bing搜索结果标题的容器了,现在Bing的搜索结果标题一般放在<h2>标签里,标题的链接直接在<h2>下的<a>标签中。

修正后的完整代码

import requests
from bs4 import BeautifulSoup

# 设置查询参数和请求头
payload = {'q': 'sport', 'first': '11'}
# 用更真实的浏览器User-Agent,避免被Bing拦截
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

# 发送正确的GET请求
req = requests.get('https://www.bing.com/search', params=payload, headers=headers)
req.encoding = 'utf-8'  # 确保页面编码正确,避免乱码

# 解析页面
soup = BeautifulSoup(req.text, 'html.parser')

# 提取搜索结果URL
urls = []
# 遍历所有搜索结果的标题标签
for result_title in soup.find_all('h2'):
    link_tag = result_title.find('a')
    if link_tag and 'href' in link_tag.attrs:
        raw_url = link_tag['href']
        # 处理相对链接,拼接成完整URL
        if raw_url.startswith('/'):
            raw_url = 'https://www.bing.com' + raw_url
        urls.append(raw_url)

# 输出提取到的URL
print(urls)

补充说明

  • 建议使用更贴近真实浏览器的User-Agent,不然Bing可能会返回反爬页面,导致无法提取内容。
  • 如果之后Bing的页面结构再变化,你可以用浏览器的开发者工具(F12)查看当前搜索结果的HTML结构,调整BeautifulSoup的选择器即可。

内容的提问来源于stack exchange,提问作者user7665219

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:55:36