使用Beautiful Soup提取href属性值时遇TypeError问题求助
解决BeautifulSoup提取href时的NoneType错误
你遇到的问题其实是个小误区:当你执行carsntrucks = soup2.find(attrs={"data-cat": "cta"})后,返回的carsntrucks本身就是你要找的<a>标签对象,而不是包含<a>的父元素。这时候再调用carsntrucks.a相当于在这个<a>标签里找子级的<a>标签,结果自然是None,所以会触发TypeError。
正确的提取方式
既然carsntrucks已经是目标<a>标签,直接访问它的href属性就可以了:
carsntrucks = soup2.find(attrs={"data-cat": "cta"}) # 先判断元素是否存在,避免None引发错误 if carsntrucks: # 方式1:直接通过下标获取href print(carsntrucks['href']) # 方式2:用get()方法,更安全(元素无href时返回None而非报错) print(carsntrucks.get('href'))
更严谨的写法(指定标签类型)
为了避免匹配到非<a>标签的元素(虽然你的场景里结果是<a>),可以在find时同时指定标签名和属性,让查找更精准:
carsntrucks = soup2.find('a', attrs={"data-cat": "cta"}) if carsntrucks: print(carsntrucks.get('href'))
这样就能顺利输出你想要的/d/cars-trucks/search/cta啦!
内容的提问来源于stack exchange,提问作者imhungry
相关产品推荐
相关产品推荐

