我需要从加密货币市场读取要价/买入价。 但"陈旧元素错误"发生在市场过于拥挤时。
我使用facebook/php-webdirver,Selenium Stand Alone Server 3.9.1.jar和chromeDriver和PHP 7.1。
这是我第一次尝试选择数据:
$driver->findElements(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='bid-price']"));
这是最后一个:
$driver->wait()->until(WebDriverExpectedCondition::presenceOfAllElementsLocatedBy(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='bid-price']")));
第一个问题是我是否以正确的方式获得这些快速变化的数据(如股票市场或加密货币市场)?加密货币投标表截图 - 来自Bitz 比兹加密货币实时买卖表
第二个是为什么当我使用以下代码来避免致命错误时,什么也没发生并且像往常一样发生致命错误?
try{
$asks = $driver->findElements(WebDriverBy::xpath("//tr[@class='price-level']//td[@class='ask-price']"));
}catch(StaleElementReferenceException $e)
{
echo 'Error Occurred';
}
最后,在 PHP 上花了一周多的时间后,我决定改变我的方式。 我回顾了其他语言方法。 Js 在每周下载量中排名第一。 我尝试首先使用Selenium-WebDriver库,每周下载量超过140万次。好的,但我不能使用它。其实我不喜欢它是为了个人原因! 另一个著名的JS网页抓取库名为"WebDriverIO"不是我想要的!
我以前从未使用过 NodeJS 和 NPM,我找不到快速安装或快速运行它并且专业的方法。
我第二次尝试Python,结果很棒:) 有非常快的开始,许多可读的文档可以找到你的目标,还有很多人回答你的问题 另一方面,Python语法与Php太相似了,你可以像在Php中一样轻松地连接MySQL。
Python 3.7 with Selenium for python帮助我在10小时内完成了我的应用程序(包括从零开始学习python)。
最后,我的应用程序就像一个魅力,我真的很高兴:) 现在我有由HTML/JS(jQueryAjax)编码的接口 + 服务器上的数据库连接以馈送我的字体端 + Python脚本来刮擦和感受DB。
Try-Catch仍然无法在facebook/php-webdriver Php中工作,但现在谁在乎!