读取Webpage表中的内容

nutch将从网页中抓取到的信息放入hbase数据库中,默认情况下表名为$crawlId_webpage,但表中的内容以16进制进行表示,直接scan或者通过Java API进行读取均只能读取到16进制信息。

因此nutch提供了readdb选项进行数据获取,将表中的内容读取到一个文本中。

具体用法为:

$ bin/nutch readdb
Usage: WebTableReader (-stats | -url [url] | -dump <out_dir> [-regex regex])
                      [-crawlId <id>] [-content] [-headers] [-links] [-text]
    -crawlId <id>  - the id to prefix the schemas to operate on,
                     (default: storage.crawl.id)
    -stats [-sort] - print overall statistics to System.out
    [-sort]        - list status sorted by host
    -url <url>     - print information on <url> to System.out
    -dump <out_dir> [-regex regex] - dump the webtable to a text file in
                     <out_dir>
    -content       - dump also raw content
    -headers       - dump protocol headers
    -links         - dump links
    -text          - dump extracted text
    [-regex]       - filter on the URL of the webtable entry

示例:

(1)seed.txt的内容为:

http://www.163.com

(2)执行以下命令进行inject操作

bin/nutch inject seed.txt -crawlId test001

(3)scan表中内容,发现无意义

hbase(main):002:0> scan 'test001_webpage'
ROW                                         COLUMN+CELL
 com.163.money:http/                        column=f:fi, timestamp=1423550107073, value=\x00'\x8D\x00
 com.163.money:http/                        column=f:ts, timestamp=1423550107073, value=\x00\x00\x01Kr2\xC7\xD6
 com.163.money:http/                        column=mk:_injmrk_, timestamp=1423550107073, value=y
 com.163.money:http/                        column=mk:dist, timestamp=1423550107073, value=0
 com.163.money:http/                        column=mtdt:_csh_, timestamp=1423550107073, value=?\x80\x00\x00
 com.163.money:http/                        column=s:s, timestamp=1423550107073, value=?\x80\x00\x00
1 row(s) in 0.4090 seconds

(4)将表中内容读取到/mnt/jediael/2

bin/nutch readdb  -dump /mnt/jediael/2  -crawlId test001 -content 

(5)查看/mnt/jediael/2中的内容

$ ll
total 4
-rwxrwxrwx. 1 jediael jediael 344 Feb 10 14:41 part-r-00000
-rwxrwxrwx. 1 jediael jediael   0 Feb 10 14:41 _SUCCESS
$ cat part-r-00000
http://money.163.com/   key:    com.163.money:http/
baseUrl:        null
status: 0 (null)
fetchTime:      1423550105558
prevFetchTime:  0
fetchInterval:  2592000
retriesSinceFetch:      0
modifiedTime:   0
prevModifiedTime:       0
protocolStatus: (null)
parseStatus:    (null)
title:  null
score:  1.0
marker _injmrk_ :       y
marker dist :   0
reprUrl:        null
metadata _csh_ :        ?锟

时间: 2024-11-29 09:36:13

读取Webpage表中的内容的相关文章

一百一十五、脱离SAP本体,通过ActiveX读取SAP表中数据

一.Sap自带有客户端,但是非常之臃肿卡顿,可以利用ActiveX的方式,脱离Sap本体,来读取Sap表中的内容进行插入等操作,非常之方便.代码如下: 二.界面如下,输入好相关内容,点击登录,提示登录成功 三.点击读表内容按钮,可以读出来表内容 四.我们打开SAP的表,和我们读出来的对比一下,发现一模一样 非常之完美,有很大的想象空间. 原文地址:https://www.cnblogs.com/tianpan2019/p/11444016.html

用javascript技术读取注册表中软件安装位置并启动本地软件

1.首先读取注册表中本地软件安装的位置,如果未安装则无就跳转到下载页面. 2.启动软件,关闭页面. 3.如报错提示. <SCRIPT language=javascript>  <!--   function killErrors(){  alert("请将您浏览器Internet选项中的“对没有标记为安全的ActiveX控件进行初始化和脚本运行”设置为“启用”!/n/n然后刷新本页登陆!");  return true;}   window.onerror = ki

C#读取注册表中二进制类型的值(REG_BINARY)

如需要读取注册表中某个键的值, 例如读取DriverDesc对应的值,一般情况下为String类型,读取代码如下: RegistryKey driverKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000"); string result = (String)driverKey.GetValue

Flex读取txt文件中的内容报错

Flex读取txt文件中的内容 1.具体错误如下 2.错误原因 读取文件不存在 var file:File = new File(File.applicationDirectory.nativePath+"/phone.txt"); 3.解决办法 将文件导入进去 Flex读取txt文件中的内容报错

Flex读取txt文件中的内容(一)

Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 13000003853 13000003854 13000003855 13000003856 13000003857 13000003858 13000003859 13000003860 13000003861 13000003862 13000003863 13000003864 1300000

Flex读取txt文件中的内容(二)

Flex读取txt文件中的内容 自动生成的文件 LoadTxt-app.xml: <?xml version="1.0" encoding="utf-8" standalone="no"?> <application xmlns="http://ns.adobe.com/air/application/1.5.3"> <!-- Adobe AIR Application Descriptor Fi

关于ajax读取数据表中存放复合json的问题

自己模拟了一点json数据存放在了数据库一个表中大家可以自己模拟 {"1":{"id":"1","name":"asd","type":"1","value":"1L,4L"}} {"2":{"id":"2","name":"kjf&quo

merge into 实现向表中更新内容&#183;

表触发器2.0 行触发器获取的值改为放在中间表中 触发器在向目标表中写数据时,目标表的记录可能不完全,需要向目标表添加不存在的数据. 用到merge into 语法. merge into  要更新的表(目标表) using  记录完整的表(源表) on  两表记录对比条件 when matched then update when not matched then insert 注意:执行过程是源表中记录一条一条去匹配目标表内容,所以源表中数据不能有符合对比条件的重复数据 另:    某语句要

SQL Server全库搜索(在所有表中查找内容)

SQL Server版本:SQL Server2008某个内容到底存储在数据库的哪个地方?无从下手时,可以使用全库查找.SQL Server在整个库的所有表的所有字段中查找内容,用到了临时表,游标循环. declare @Str nvarchar(max), @tableName varchar(50), @colName varchar(50), @rowCount int select a.name tableName, b.name Colname, 0 as IsFound into #