如何使用BeautifulSoup与Requests获取网页嵌套div内容?
如何用BeautifulSoup和Requests抓取嵌套div内容?
别担心,你其实已经走在正确的路上啦!你之前写的代码里,变量w完全是可以继续调用find/find_all方法的有效对象——只是你误以为它不能而已。
当你通过soup.find()获取到结果时,只要结果不是None,它就是一个Tag对象(属于BeautifulSoup的核心对象家族),和最开始的soup对象一样,支持所有的查找方法,完全可以用来嵌套查找内部元素。
给你整理了一份更健壮的完整示例代码,包含了请求校验和非空判断(避免找不到元素时报错):
from bs4 import BeautifulSoup import requests url = "你的目标网页URL" r = requests.get(url) # 先确认请求是否成功 if r.status_code == 200: soup = BeautifulSoup(r.content, "lxml") # 定位外层的content div w = soup.find("div", {"id":"content"}) # 先检查外层div是否存在 if w: # 直接在w内部查找嵌套的目标div w2 = w.find("div", {"id": "some nested div"}) # 检查嵌套div是否找到,再提取内容 if w2: print("抓取到的内容:", w2.get_text(strip=True)) else: print("没找到id为'some nested div'的嵌套元素") else: print("页面中找不到id为'content'的div") else: print(f"请求网页失败,状态码:{r.status_code}")
另外给你几个实用小技巧:
- 查找元素时可以用更简洁的写法:
w.find("div", id="some nested div")(不用包裹成字典也能正常工作) - 如果要获取多个同类型的嵌套元素,用
find_all()方法,它会返回一个包含所有匹配Tag的列表 - 每次查找后都做非空判断,能有效避免找不到元素时抛出
AttributeError异常
内容的提问来源于stack exchange,提问作者Seetch
相关产品推荐
相关产品推荐

