[2013.12.25]
我们的设想是将大众点评中的数据抓取过来并结构化存储,诸如店铺、景点的名称,经纬度,地址,描述等。
我还不是很确定如何清洗整个网站的数据并且生成这些有用的结构化数据,不过没关系,我们第一步先将整个网站抓取下来再说。
配置seed.txt,里面放入http://www.dianping.com
配置conf/regex-urlfilter.txt,最后一行改为+http://www.dianping.com
然后开始抓取,来个狠的: bin/nutch crawl urls -depth 50 -topN 50
而后发现很多被skipped掉,说什么什么truncate:
Parsing http://www.dianping.com/citylist
http://www.dianping.com/citylist skipped. Content of size 150104 was truncated to 65368
修改方法,将conf/nutch-default.xml 将 parser.skip.truncated 为false:
<property>
<name>parser.skip.truncated</name>
<value>false</value>
<description>Boolean value for whether we should skip parsing for truncated documents. By default this
property is activated due to extremely high levels of CPU which parsing can sometimes take.
</description>
</property>
在开始抓取,就会有很多很多很多的链接入库了。
整个点评的数据太多了,不知道要抓多久,而且如果更新了怎么办呢?nutch一定有办法,用bin/crawl来抓取吧,写好的脚本。
bin/crawl urls/seed.txt TestCrawl http://localhost:8983/solr/ 2
#其中参数对应为:
SEEDDIR="$1"
CRAWL_ID="$2"
SOLRURL="$3"
LIMIT="$4"
但是,没有那么好的事情,用这个脚本的时候会出现以下的错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Column length too big for column 'text' (max = 16383); use BLOB or TEXT instead
即使修改了数据库表以及gora-sql-mapping.properties也不行,貌似是个bug。可以看这里还有这里。
回头再研究。