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

BeautifulSoup4中find_all无法匹配ISBN文本的问题求助

问题排查与解决方案

1. 修正URL变量名错误

你的代码里定义了变量url_0,但请求时用的是未定义的url,这会直接引发错误,先修正这个基础问题:

import requests
from bs4 import BeautifulSoup

url = 'https://www.boekenprijs.be/uitgebreid-zoeken?zoek=&veld=all&gbpstartdatumvan=&gbpstartdatumtotenmet=&gbpeinddatumvan=01/04/2024&gbpeinddatumtotenmet=12/08/2024&_token=FAoSCCoUK-SPrL-ktj4MtsVBv3L4K-FaH3jxSo259D0&page=1'
result = requests.get(url)
doc = BeautifulSoup(result.text, "html.parser")

2. 解决文本精确匹配失效问题

HTML中的"ISBN"文本可能带有空格、换行或大小写差异,用string="ISBN"的精确匹配会失败。改用以下两种方式:

# 方法1:用lambda判断文本是否包含ISBN(忽略前后空白)
aux = doc.find_all(string=lambda text: text and 'ISBN' in text.strip())

# 方法2:用正则表达式匹配(支持大小写不敏感)
import re
aux = doc.find_all(string=re.compile(r'ISBN', re.IGNORECASE))

3. 直接定位ISBN所在的标签结构

通常ISBN不会单独作为文本节点存在,而是和<dt>、<dd>等标签配对出现。可直接定位包含ISBN的标签,再提取对应值:

# 定位所有包含ISBN的标签,再获取相邻的ISBN值
isbn_labels = doc.find_all('dt', string=lambda t: t and 'ISBN' in t.strip())
for label in isbn_labels:
    isbn_value = label.find_next_sibling('dd').get_text(strip=True)
    print(f"ISBN: {isbn_value}")

4. 添加请求Headers绕过反爬

很多网站会校验请求的User-Agent字段,不带Headers会返回空页面或无效内容。添加浏览器标识:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}
result = requests.get(url, headers=headers)

5. 处理动态加载内容

如果ISBN信息是通过JavaScript动态渲染的,requests无法抓取到完整内容,需用浏览器自动化工具:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless=new')  # 无头模式运行浏览器
driver = webdriver.Chrome(options=options)
driver.get(url)

# 定位所有包含ISBN的元素并输出文本
isbn_elements = driver.find_elements(By.XPATH, "//*[contains(text(), 'ISBN')]")
for elem in isbn_elements:
    print(elem.text)

driver.quit()

内容的提问来源于stack exchange,提问作者Maximiliano Machado Goncalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:12:33