【发布时间】:2018-12-08 22:22:06
【问题描述】:
Element.text 返回元素的文本内容。
在 SO 上的另一个 thread 中,python 脚本从 Instagram 帐户上的关注者模式中抓取数据。以下部分返回列表中的文本并将它们存储在数组中。
xpath = "//div[@style='position: relative; z-index: 1;']//ul/li/div/div/div/div/a"
followers_elems = driver.find_elements_by_xpath(xpath)
return [e.text for e in followers_elems]
我正在尝试在 JavaScript 中实现类似的结果(我正在使用 WebDriverJS):
const XPATH = "/html/body/div[3]/div/div[2]/div/div[2]/ul/div/li";
var followers_elems = await driver.findElements(By.xpath(XPATH));
var followers_temp = [];
for (var e in followers_elems) {
followers_temp.push(e.textContent); }
console.log(followers_temp);
我不确定 textContent 是否是 .text 的正确属性。
我已经尝试了一百万种不同的选择,但我得到的只是数组中未定义的值:
我对 JS 还不是很精通,但我确信 e 是从 followers_elems 读取的,如果我只在数组中推送 e,它可以很好地记录总关注者数量。它正在从我不理解的 xpath 获取文本值。 Python 如此优雅地做到了这一点,但尽管冗长的 JavaScript 让我失望了。
谢谢。
【问题讨论】:
-
尝试记录
e并查看哪个属性名称包含您想要的文本。在 JS 中,你可以这样做:console.log(e); -
谢谢阿布舍克。我想要的文本是来自 xpath 的 textContent。关注我的人的用户名。事实上,我上面的代码打算从关注者模式中的每个
- 中获取所有可读文本。记录
e会给我关注人数。但我需要followers_temp数组中带有用户名的文本。 - 中获取所有可读文本。记录
-
你在异步函数中运行 await 吗?
-
是的。我已经让其余部分在 JS 中运行顺利。将整个脚本发布到某个地方会更有帮助吗?
-
我在下面发布了一个函数,如果你抓住它的for循环部分它会起作用。
标签: javascript node.js selenium-webdriver npm