使用BeautifulSoup的select方法匹配类与元素时出错求助
解决BeautifulSoup选择器匹配类下指定元素的问题
首先,咱们先揪出你代码里的关键问题:你写的.tr是类选择器,它会匹配class="tr"的元素,但你实际要找的是HTML里的<tr>标签对吧?所以这里应该去掉点,直接写tr(标签选择器)。
修正后的代码示例
假设你的目标结构是「class为someclass的元素下的<tr>标签直接包含<title>元素」,修正后的代码应该是:
drastiriotita_kounoupion = [po.get_text("|", strip=True) for po in four_days.select(".someclass tr > title")]
不同结构的适配技巧
如果<title>不是<tr>的直接子元素(比如中间还有<td>标签),就把直接子元素选择器>换成空格(后代选择器),这样能匹配所有嵌套在<tr>里的<title>:
drastiriotita_kounoupion = [po.get_text("|", strip=True) for po in four_days.select(".someclass tr title")]
排查小技巧
要是还是拿不准选择器对不对,用浏览器的开发者工具(F12)右键目标<title>元素选「检查」,看它的层级路径:
- 比如实际结构是
<div class="someclass"><tr><td><title>...</title></td></tr></div>,那选择器就写成.someclass tr td title
另外,如果select()返回空列表,你可以分步排查:
- 先打印
four_days.select(".someclass")看看有没有找到目标父元素 - 再打印
four_days.select(".someclass tr")确认<tr>标签是否被匹配到 - 最后加上
<title>的选择器,逐步缩小范围
内容的提问来源于stack exchange,提问作者GioZio
相关产品推荐
相关产品推荐

