我愿意解析https://2gis.kz,并且我在使用.text或任何用于从类中提取文本的方法时遇到了错误的问题
我正在键入搜索查询,例如";适合度";
我的窗口变量是
all_cards = driver.find_elements(By.CLASS_NAME,"_1hf7139")
for card_ in all_cards:
card_.click()
window = driver.find_element(By.CLASS_NAME, "_18lzknl")
这是我如何打开一个包含所有基本信息的迷你窗口的简化版本。下面我附上了一段代码,我试图从电话号码夹中提取文本。
texts = window.find_elements(By.CLASS_NAME,'_b0ke8')
print(texts) # this prints out something from where I am concluding that this thing is accessible
try:
print(texts.text)
except:
print(".text")
try:
print(texts.text())
except:
print(".text()")
try:
print(texts.get_attribute("innerHTML"))
except:
print('getAttribute("innerHTML")')
try:
print(texts.get_attribute("textContent"))
except:
print('getAttribute("textContent")')
try:
print(texts.get_attribute("outerHTML"))
except:
print('getAttribute("outerHTML")')
嗨,伙计们,我解决了一个问题。由于某种原因,.文本不起作用。我猜开发人员设法保护了信息不受这种方法的影响。我用了
get_attribute("innerHTML") # afaik this allows us to get a html code of a particular class
现在它就像一个符咒。
texts = window.find_elements(By.TAG_NAME, "bdo")
with io.open("t.txt", "a", encoding="utf-8") as f:
for text in texts:
nums = re.sub("[^0-9]", "",
text.get_attribute("innerHTML"))
f.write(nums+'n')
f.close()
所以问题是:
- 我正试图通过使用print(文本(打印项目列表
- 即使当我试图在for循环中打印文本变量的每个元素时,我也会遇到错误,因为它是在utf-8中解码的
我希望有人会发现它很有用,不要花太多时间试图修复这样一个简单的错误。
find_elements
方法返回一个web元素列表。所以这个
texts = window.find_elements(By.CLASS_NAME,'_b0ke8')
为texts
提供一个web元素列表
不能直接在list
上应用.text
方法
为了获得每个元素文本,您必须迭代列表中的元素并提取该元素文本,如下所示:
text_elements = window.find_elements(By.CLASS_NAME,'_b0ke8')
for element in text_elements:
print(element.text)
此外,我不确定您正在使用的定位器_1hf7139
、_18lzknl
和_b0ke8
类名似乎是动态类名,即它们可能会在每次浏览会话中更改。