800819103
在线客服,实时响应qq群
在线客服,实时响应客服电话
13318873961java也可以写爬虫,不过可能代码会多些,但也不是很难写,难的是对页面的分析,还有找规律,还有反爬虫机制这些,今天精灵代理跟大家分享一下java爬虫怎么爬取知乎问答的案例。
一、java爬虫怎么爬取知乎问答
第一次运行:
在cmd中cd到项目目录下运行
source 工作目录/sql/createtable.sqlsource 工作目录/sql/QAtable.sql
来建立数据库表
getTopicId(); //用于获取主话题idgetAllChildTopics(); //用于获取子话题id
通过获取的子话题id来爬取相应的热门问答
loadAllTopicHotQA(); //爬取热门问答
如果您希望每隔一段时间爬取一次数据可以设置定时器来让程序每隔一段时间执行一次该方法.
二.爬取速度控制
若您希望爬取速度更快那么可以修改线程池的大小:
ExecutorService exec = Executors.newFixedThreadPool(2);
爬取过快或造成ip被封,可使用代理用不同的ip进行爬取,比如精灵代理,有大量的IP可以提供使用。
三、爬取过程中遇到的问题
1.在爬虫爬取的过程中很多子话题下会拥有相同的问题
很多主题类似的子话题下有相同的问题,在写代码测试的过程中一直以为出错了。。
2.在未登录的情况下有时无法爬取到用户的username
爬取到的username为知乎用户,这种情况可能会造成正则匹配的位置错误。
java爬虫怎么爬取知乎问答?爬虫就是使用程序模拟一个浏览器对页面上的数据进行不断的连接获取解析并保存。爬虫并不难实现,要实现,需要学习正则表达式、java多线程线程池池知识,还有httpclient网络库及json和html结构。