Python3.x已知网页文字位置如何提取指定变量及seek报错处理
问题原因
seek()和readline()是Python中文件类对象的专属方法,你代码里通过elem.get_attribute("outerHTML")获取到的r是字符串类型,原生没有这两个方法,因此触发AttributeError报错。
解决方法
方案1:适配现有逻辑,使用字符串切片操作
如果要保留你原有基于字符偏移量提取内容的逻辑,直接替换seek+readline的操作为字符串切片即可:
elem = driver.find_element_by_xpath("//*") r = elem.get_attribute("outerHTML") aa1 = "text-xlarge text-semibold text-primary text-uppercase" gr = r.find(aa1) gr = gr + 55 # 从偏移位置gr开始截取,取第一行内容 target_line = r[gr:].splitlines()[0] print(target_line)
方案2:更稳定的Selenium直接定位方案(推荐)
你要找的内容属于携带指定class属性的元素,不需要拉取整页HTML再手动切片,直接用XPath定位对应元素即可,准确率和效率更高:
# 直接定位携带目标class的元素 target_elem = driver.find_element_by_xpath('//*[contains(@class, "text-xlarge text-semibold text-primary text-uppercase")]') # 输出元素文本内容 print(target_elem.text) # 如果需要元素的完整HTML代码,可替换为下行 # print(target_elem.get_attribute("outerHTML"))
内容的提问来源于stack exchange,提问作者dkaveritt
相关产品推荐
相关产品推荐

