如何Map照片和文本

ukxgm1gy  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(502)

请遵守以下谷歌文档:
https://docs.google.com/document/d/1dw6mjw0vxhzd3_h86rgtzwmelbqe8tyggi41jb1oz-o/edit
我正在尝试使用mapreduce或importtsv将数据放入hbase。但我的主要问题是处理照片。我想把照片放在一个单独的栏家庭。如果照片没有任何可以识别的东西,比如(文本)名称,我该如何只选择照片并将其导入hbase。
我想用正则表达式。但有些地区的结构不同。例如,“亚利桑那1号”和“阿拉斯加”。
我需要知道如何具体地识别照片,以便它们可以被区分和适当地导入。

tpxzln5u

tpxzln5u1#

考虑到上述文档的结构,这就是您需要的表达式。它将匹配所有图像URL和每个图像描述。

<image\sxlink:href="(https:\/\/[^"\s]+)".*?<title><\/title><desc>(.+?)<\/desc><\/image>

演示
在php中的用法:

$html = '<p>Members of our tim</p><image xlink:href="https://lh4.googleusercontent.com/z3GK1MdYyLTo0Q0xLmawvcptIrK4qkQx7XJWUgTK_i6Psm22GBqZXBh-w0TeQ5xgKxckQOB2wHWySSIpNj3tXx65MPXmaxKjK4ye_Xu-wAUFKLVhvWFgIedtzxo" width="100%" height="100%" preserveAspectRatio="none"><title></title><desc>Bradley Byrne.jpg</desc></image><h1>Some big title</h1><p>Something <span>more</span> here</p><image xlink:href="https://lh5.googleusercontent.com/fWYh7qTWqu4_4oxAiNhmnMCmD6DScZ6bIvkF5nSFunU8NxKlBT1T-1J85MJCqghhbChFzoLi-p4ZFVDCA2DWWBP9Paagp9ZgshqnGK5CQQF6D7IoBGihcFZoOms" width="100%" height="100%" preserveAspectRatio="none"><title></title><desc>Spencer Bachus 113th Congress.jpg</desc></image><h1>TITLE</h1><p>Testing, testing, testing</p><image xlink:href="https://lh5.googleusercontent.com/VAHzM6OkdtxT61j9XSgTDKlpVi99WsFfzNAlvqmnpCi90XFs9aUNMfuCeeeQ3e26fykjveoxldHvv5jO1Bk9IeEmeU7DdGVAM1N9xXoB8tJTYBeTeFBxigXtT5s" width="100%" height="100%" preserveAspectRatio="none"><title></title><desc>Kyrsten Sinema 113th Congress.jpg</desc></image><p>Last updated on 25th of July, 2014</p>';
$pattern = '/<image\sxlink:href="(https:\/\/[^"\s]+)".*?<title><\/title><desc>(.+?)<\/desc><\/image>/';
if(preg_match_all($pattern, $html, $matches)){
  $size_of_matches = count($matches[0]);
  for($i = 0; $i < $size_of_matches; $i++){
    echo $matches[1][$i] . " -> " . $matches[2][$i] . "<br />";
  }
}

输出:

https://lh4.googleusercontent.com/z3GK1MdYyLTo0Q0xLmawvcptIrK4qkQx7XJWUgTK_i6Psm22GBqZXBh-w0TeQ5xgKxckQOB2wHWySSIpNj3tXx65MPXmaxKjK4ye_Xu-wAUFKLVhvWFgIedtzxo -> Bradley Byrne.jpg
https://lh5.googleusercontent.com/fWYh7qTWqu4_4oxAiNhmnMCmD6DScZ6bIvkF5nSFunU8NxKlBT1T-1J85MJCqghhbChFzoLi-p4ZFVDCA2DWWBP9Paagp9ZgshqnGK5CQQF6D7IoBGihcFZoOms -> Spencer Bachus 113th Congress.jpg
https://lh5.googleusercontent.com/VAHzM6OkdtxT61j9XSgTDKlpVi99WsFfzNAlvqmnpCi90XFs9aUNMfuCeeeQ3e26fykjveoxldHvv5jO1Bk9IeEmeU7DdGVAM1N9xXoB8tJTYBeTeFBxigXtT5s -> Kyrsten Sinema 113th Congress.jpg
oknwwptz

oknwwptz2#

我没有使用mapreduce或importtsv的经验,所以我使用c#使用了不同的方法。正如hex4949所指出的,图像确实有与之相关联的文本。您只需从文档的源获取该数据(即,右键单击-->查看页面源)。
此代码读入文档的源代码,尝试将政治家与图像文件(基于发布的可用信息)匹配,并将结果写入文本文件。代码中有许多regex的c风格示例。这里有一个输出示例。

相关问题