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

链家城市页爬虫问题:无法从<li>标签提取href属性

问题分析与解决

兄弟,我一眼就瞅出你代码里的问题啦——你搞错了href属性所在的节点!

你通过print(t)看到的<li>标签里,其实嵌套了一个<a>子标签,而href属性是属于这个<a>标签的,不是<li>本身的。所以你直接用t.get('href')去<li>节点上找,自然拿不到任何值,只会返回None。

修正后的代码方案

方案一:先定位<li>,再提取内部的<a>标签

import requests
from bs4 import BeautifulSoup

url1 = 'https://www.lianjia.com/city/'
req1 = requests.get(url1)
soup1 = BeautifulSoup(req1.content, 'html.parser')
part = soup1.findAll("div",{"class":"city_province"})
for t in part[0].find_all('li'):
    # 找到<li>内部的<a>标签
    a_tag = t.find('a')
    if a_tag:  # 做个判断避免空节点报错
        print(a_tag.get('href'))

方案二:直接定位目标<a>标签(更简洁)

既然我们要的是<a>标签的href,不如直接跳过<li>,直接定位省份区块下的所有<a>标签:

import requests
from bs4 import BeautifulSoup

url1 = 'https://www.lianjia.com/city/'
req1 = requests.get(url1)
soup1 = BeautifulSoup(req1.content, 'html.parser')
# 找到第一个省份区块
first_province = soup1.find("div",{"class":"city_province"})
# 直接提取区块内所有<a>标签的href
for a_tag in first_province.find_all('a'):
    print(a_tag.get('href'))

关键知识点提醒

  • BeautifulSoup的get()方法是获取当前节点的属性,如果属性不在当前节点上,就会返回None。
  • 以后遇到这种情况,一定要右键检查页面元素,仔细确认属性到底属于哪个标签哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:27:59