如何使用Selenium统计网页中文本“Airport”的出现次数?
统计页面中“Airport”出现次数的可行方法
看起来你遇到的核心问题是页面内容是动态渲染的——直接用Request获取的是服务器返回的初始XML/HTML,而目标文本是通过JavaScript在浏览器端渲染出来的,所以静态抓取工具拿不到。下面给你几个靠谱的解决思路:
方法一:用Selenium模拟浏览器渲染
Selenium会真实打开浏览器,等待页面完全渲染后再抓取内容,这是处理动态页面最直接的方式:
- 步骤:
- 安装Selenium和对应浏览器的驱动(比如ChromeDriver)
- 编写代码打开目标页面,等待页面加载完成
- 获取整个页面的文本内容,统计“Airport”的出现次数
- 示例代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器驱动(其他浏览器操作类似) driver = webdriver.Chrome() driver.get("你的目标页面URL") # 等待页面主体内容加载完成,确保动态文本渲染到位 try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "body")) ) finally: # 获取页面所有可见文本 page_text = driver.find_element(By.TAG_NAME, "body").text # 统计目标文本出现次数 airport_count = page_text.count("Airport") print(f"Airport出现次数:{airport_count}") driver.quit()
方法二:分析页面的AJAX/API请求
有时候动态内容是通过后端接口异步加载的,你可以:
- 打开浏览器开发者工具(F12),切换到Network标签
- 刷新页面,过滤XHR/Fetch类型的请求,找到返回包含“Airport”相关数据的接口
- 直接用Request调用这个接口,解析返回的JSON/XML数据统计次数
- 优势:比Selenium更轻量、速度更快,适合批量抓取场景
方法三:用requests-html做轻量JS渲染
如果你觉得Selenium太重,可以试试requests-html库,它内置了简单的JS渲染功能,不需要额外安装浏览器驱动:
- 示例代码:
from requests_html import HTMLSession session = HTMLSession() r = session.get("你的目标页面URL") # 触发JS渲染,等待页面加载完成 r.html.render() # 获取页面全部文本内容 page_text = r.html.text # 统计次数(如果要忽略大小写,可用page_text.lower().count("airport")) airport_count = page_text.count("Airport") print(f"Airport出现次数:{airport_count}")
额外提醒
如果“Airport”还出现在图片alt文本、按钮title属性这类非可见文本里,记得要单独解析这些属性内容,不要只统计页面可见文本哦。
内容的提问来源于stack exchange,提问作者nhrcpt
相关产品推荐
相关产品推荐

