Java,爬虫,知网,以及编程中要注意的事项
最近工作中需要爬知网和WOS上的论文信息。
注意事项
问题:Java有一个爬虫框架,叫WebCollector。线程start后,会交由visitor执行请求。但是visit()中的异常没有任何输出,相当于try()catch{},catch中为空白。
影响:爬虫丢数据,某个visitor由于异常没有继续向下执行,并且程序没有任何报错。
原因:visitor是通过动态代理执行的。
解决:手动try catch
启发:写程序要正确处理异常
遗留:try_catch多大范围为宜?
问题:元数据爬虫中尽量不要有字符串截取的操作,很容易indexOutBound
问题:向sql服务器发出请求,带的参数要urlencode,并且可能需要转义'等字符
问题:一开始设计表的时候,要考虑足够大的容量。源数据可能会把多余的信息抓下来。
问题:爬虫缺数据,无法根据url定位数据
解决:及时打日志,把所有能打的信息都打出来,方便问题定位
问题:如何获取带header的js生成的数据
解决:webCollector提供了整合selenium的crawler,但是不支持header。所以用browserMob启动一个代理起来,会创建一个caplitites之类的对象,传入htmlDriver作为参数