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

如何在BeautifulSoup的find()函数中正确使用id属性?

解决BeautifulSoup按ID查找元素的写法问题

你的问题出在find()方法中id参数的写法上,原代码里的{id: 'wtr_svg_cntr'}存在语法错误:这里的id被当作变量使用,但你并没有定义过这个变量,导致BeautifulSoup无法正确识别要查找的属性键。

正确的写法有两种:

  1. 字典形式,键用字符串'id'
    把字典里的键改为字符串类型的'id',这样BeautifulSoup就能正确识别要匹配的id属性:

    timescale = s.find('div', {'id': 'wtr_svg_cntr'})
    
  2. 关键字参数形式,使用id_
    由于id是Python的保留关键字,BeautifulSoup提供了id_作为替代的关键字参数,写法更简洁:

    timescale = s.find('div', id_='wtr_svg_cntr')
    

修正后的完整代码:

import requests
from bs4 import BeautifulSoup
query = input("What city: ")
url = f'https://www.bing.com/search?pglt=169&q=weather+{query}'
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 Edg/114.0.1823.82'}
r = requests.get(url, headers=headers)
s = BeautifulSoup(r.content, 'lxml')
weather = s.find('div', class_="wtr_currTemp b_focusTextLarge")
timescale = s.find('div', id_='wtr_svg_cntr')  # 修正后的写法
print(timescale)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:32:38