作者:亚艾元技术部
一个办法是,使用composer,安装composer manager模块,可以实现这个功能。如果不使用composer呢?
我们开发的亚艾元采集器,用的Drupal版本是7,其中正文的提取,我们使用了一个第三方的PHP代码,最初是直接include进来的。后来发现,正文的提取正确率,只有90%,对于个别网站,由于里面的html代码的混乱,正确率会更低一点。
如何提升正确率?我们需要更换一个正文提取的库,原来的库已经没有维护了,换了一个版本,但是正确率没有上来。在Nodejs里面,有一个mozilla的正文提取的库,我们在开发chrome plugin的时候,曾经用过,正确率很高。有一个PHP版本andreskrey/readability.php,但是使用PSR4规范开发,需要借助于composer安装。
除了composer manager模块以外,在Drupal7下面,还有一个xautoload模块,可以识别第三方的psr4库。
项目地址:https://www.drupal.org/project/xautoload
安装量:24354, 属于常用模块。
安装后,按照它的API文档提示:
function hook_xautoload($adapter) { // Register a namespace with PSR-0. $adapter->add( // Namespace of a 3rd party package included in the module directory. 'Acme\GardenKit\\', // Path to the 3rd party package, relative to the module directory. 'shrubbery/lib'); // Register a namespace with PSR-4. $adapter->absolute()->addPsr4( // The namespace. 'Acme\ShrubGardens\\', // Absolute path to the PSR-4 base directory. '/home/karnouffle/php/shrub-gardens/src'); // Scan sites/all/vendor/composer for Composer-generated autoload files, e.g. // 'sites/all/vendor/composer/autoload_namespaces.php', etc. $adapter->absolute()->composerDir('sites/all/vendor/composer'); }
实现自己的钩子代码,测试,果然可以使用对应的类了:
use andreskrey\Readability\Readability;
将最新的库与亚艾元采集器整合起来,原来采集错误的重新采集,大多数都可以正确识别出来。正确率大幅度的提升了。