3 回答
TA贡献2012条经验 获得超12个赞
你甚至没有声明所有路径。Octagonal 在哪个类的 div 中,client-components-ValueChange-shape__Octagon所以搜索这个 div。
x = browser.find_elements_by_css_selector("div[class='client-components-ValueChange-shape__Octagon']") ## Declare which class
for all in x:
print all.text
输出 :
6
TA贡献1936条经验 获得超6个赞
您可以尝试使用此 css 选择器[class$='shape__Octagon']来定位内容。如果我去pyppeteer,我会做以下事情:
import asyncio
from pyppeteer import launch
async def get_content(url):
browser = await launch({"headless":True})
[page] = await browser.pages()
await page.goto(url)
await page.waitForSelector("[class$='shape__Octagon']")
value = await page.querySelectorEval("[class$='shape__Octagon']","e => e.innerText")
return value
if __name__ == "__main__":
url = "https://www.tipranks.com/stocks/sui/stock-analysis"
loop = asyncio.get_event_loop()
result = loop.run_until_complete(get_content(url))
print(result.strip())
输出:
6
TA贡献1818条经验 获得超7个赞
您在这里似乎有两个问题:
对于 xpath,我刚刚做了:
xpath = '//div[@class="client-components-ValueChange-shape__Octagon"]'
然后做:
打印(元素。文本)
它得到你想要的价值。但是,您的代码实际上并没有等到浏览器完成加载页面后才执行 xpath。对我来说,使用 Firefox,我只有大约 40% 的时间以这种方式获得价值。Selenium 有很多方法可以处理这个问题,最简单的可能是在 browser.get 和 xpath 语句之间休眠几秒钟。
您似乎正在设置 Firefox,但随后使用 Phantom。我没有在 Phantom 上尝试过,Phantom 可能不需要睡眠行为。
添加回答
举报