悠悠楠杉
PythonSelenium教程:定位特定文本并提取关键子串
python
try:
description = driver.find_element(By.CLASS_NAME, "description").text
except:
try:
desc_meta = driver.find_element(By.XPATH, "//meta[@name='description']")
description = desc_meta.get_attribute("content")
except:
description = "暂无描述"
最复杂的部分是正文处理。我们已经通过XPath找到了包含目标词的段落,但如何提取“关键子串”?比如只提取包含“AI技术突破”前后50个字符的内容?
可以这样做:
python
targettext = "人工智能"
contextwindow = 50
results = []
for elem in elements:
fulltext = elem.text
index = fulltext.find(targettext)
if index != -1:
start = max(0, index - contextwindow)
end = min(len(fulltext), index + len(targettext) + contextwindow)
snippet = fulltext[start:end]
results.append(snippet)
这样我们就得到了围绕关键词的上下文片段,便于后续分析。
值得注意的是,现代网页大量使用JavaScript动态渲染内容,因此简单的find_element可能无法立即获取数据。合理使用WebDriverWait等待元素出现至关重要:
python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
contentdiv = wait.until(EC.presenceofelementlocated((By.CLASS_NAME, "article-content")))
整个流程完成后,记得关闭浏览器:
python
driver.quit()
这套方法不仅适用于新闻抓取,还可拓展至社交媒体监控、竞品分析、舆情追踪等多个场景。关键是理解:Selenium不只是点击按钮的工具,更是深入网页内容的“探针”。只要你能看清页面结构,就能用代码精准捕获所需信息。
