使用Python的requests和LXML爬取网页时XPath提取文本为空求助
问题排查与解决方法
1. 移除XPath中的tbody节点
浏览器开发者工具会自动为<table>补全<tbody>标签,但实际页面返回的HTML源码里可能并不存在这个节点。把你的XPath修改为:
/html/body/center[2]/table/tr[3]/td/font/text()
直接跳过tbody节点后重试提取文本。
2. 排查动态加载问题
如果上述方法无效,大概率是页面内容通过JavaScript动态渲染的。若你用的是requests这类静态请求库,无法获取JS渲染后的内容,需要改用支持JS渲染的工具,比如selenium:
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://datasheetspdf.com/pdf/1060035/GME/PC817/1") # 提取目标文本 target_text = driver.find_element(By.XPATH, '/html/body/center[2]/table/tr[3]/td/font').text print(target_text) driver.quit()
3. 改用更稳定的相对定位XPath
避免依赖绝对路径,改用基于内容的相对定位,比如定位包含"Description"的行后,提取相邻的文本块:
//td[contains(text(), 'Description')]/following-sibling::td/font/text()
这种方式不会因为页面结构的微小变动而失效。
4. PDF下载链接的定位建议
下载链接可以通过文本特征定位,比如:
//a[contains(text(), 'Download PDF')]/@href
直接提取链接的href属性即可获取下载地址。
内容的提问来源于stack exchange,提问作者K Max
相关产品推荐
相关产品推荐

