selenium获取html元素中的文本内容

方法1:.text

直接定位元素

直接使用xpath路径定位元素,最后使用.text获取元素中文本

  • 注意!!: 此时text_translation取.text 之前 类型为WebElement
from selenium import webdriver

driver = webdriver.Chrome(executable_path='你的chromedriver.exe所在路径')

text_translation = driver.find_element_by_xpath('//span[@class="VIiyi"]/span/span').text
方法2:text()

使用etree.HTML (提前导入模块from lxml import etree)

etree.HTML先解析当前页面资源,再路径定位元素时,路径最后添加/text()获取文本,取文本列表中第一个元素[0]

  • 注意!!: 此时text_translation取[0] 之前 类型为list,list输出为[‘hello’]
from selenium import webdriver
from lxml import etree

driver = webdriver.Chrome(executable_path='你的chromedriver.exe所在路径')

source = etree.HTML(driver.page_source)
text_translation = source.xpath('//span[@class="VIiyi"]/span/span/text()')[0]  
### 使用 Selenium 批量提取页面中多个元素文本值 为了批量获取网页上特定类型的元素及其文本内容,可以利用 `find_elements` 方法找到所有匹配的选择器并遍历这些元素以收集其文本。对于淘宝这样的复杂网站,可以通过 CSS 或 XPath 定位商品列表中的每一个条目,并从中抽取所需的信息。 ```python from selenium import webdriver from selenium.webdriver.common.by import By # 初始化 WebDriver 实例 (这里假设使用 Chrome 浏览器) browser = webdriver.Chrome() try: browser.get('https://example.taobao.com') # 替换成实际的目标 URL # 查找所有的商品项容器节点 items = browser.find_elements(By.CSS_SELECTOR, '.item-container-classname') product_texts = [] for item in items: try: title = item.find_element(By.CLASS_NAME, 'product-title').text.strip() price = item.find_element(By.CLASS_NAME, 'price-tag').text.strip() # 可继续添加其他字段... product_texts.append({ 'title': title, 'price': price }) except Exception as e: print(f"Error processing an element: {e}") finally: browser.quit() ``` 这段代码展示了如何定义一个循环去访问每个 `.item-container-classname` 类下的子元素,并读取它们内部指定标签内的纯文本[^1]。注意这里的类名和结构需根据目标页面的具体情况进行调整。 当涉及到分页加载更多数据时,可参照提供的关于检测是否达到最后一页的方法,在每次成功翻页后重复上述过程直到无法再前进为止[^2]。 另外,考虑到某些情况下直接调用点击可能失败的情况,还可以考虑采用模拟按键的方式来触发页面交互行为,例如按下回车键代替鼠标左击动作[^3]。 #### 处理 AJAX 动态加载的内容 由于现代 Web 应用程序经常依赖于异步 JavaScript 和 XML(AJAX),这可能导致部分 HTML 片段是在初始请求之后才被注入到 DOM 中的。因此,在执行查找之前应当等待必要的条件满足——即确保所需的元素确实存在于文档对象模型之中: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(browser, timeout=10) # 等待某个特定的商品卡片出现后再开始抓取 first_item_locator = (By.CSS_SELECTOR, ".item-container-classname:first-of-type") wait.until(EC.presence_of_element_located(first_item_locator)) ``` 这样能够有效提高脚本稳定性,减少因网络延迟等因素引起的错误率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值