本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)

Quora

Quora是一个在线知识市场,Quora集合许多问题和答案,也容许用户协同编辑问题和答案。问题及回答的质量较高,对于科研朋友是一个很好的数据集。这篇博客主要介绍Quora数据采集的思路。其目标是给定搜索的关键词,获取关键词对应的问题id,标题,url,回复数以及问题概要。其采集思路大体如下:

  1. 定义关键词,爬取数据保存的目录以及爬取的页面总数
  2. 使用selenium获取关键词对应的页面
  3. 根据定义的页面总数,条用JS操作滚动条下拉页面
  4. 解析滚动之后的页面
  5. 封装数据,存储为excel格式。

部分程序

以下是部分程序:

/*** 合肥工业大学 管理学院 qianyang 1563178220@qq.com* 实现quora数据的采集 * 实现功能:爬取与关键字有关的问题id,标题,url,回复数以及问题概要*/
public class QuoraKeywordsCrawlerArgs {public static void main(String[] args) throws Exception {//开始解析命令参数QuoraCrawlerOptions option  = new QuoraCrawlerOptions();CmdLineParser parser = new CmdLineParser(option);try {if (args.length == 0){showHelp(parser);return;}parser.parseArgument(args);//参数校验并调用程序开始爬取程序crawlerStart(option.keyword,option.outputfile,option.pn);}catch (CmdLineException cle){System.out.println("Command line error: " + cle.getMessage());showHelp(parser);return;}catch (Exception e){System.out.println("Error in main: " + e.getMessage());e.printStackTrace();return;}}/*** 该方法的输入:关键字,爬取内容保存目录,爬取的页数*/public static void crawlerStart(String keyword,String filepath,int pagenumber) throws Exception {long start = System.currentTimeMillis();crawlerKeywordsPages(keyword,filepath,pagenumber);     //爬取关键词页面long end = System.currentTimeMillis();System.out.println(">>>>>>>>>爬取" + keyword + "的"+pagenumber+"页信息用时为:" + (end - start)/1000 + "秒<<<<<<<<<<<<<");}public static void crawlerKeywordsPages(String keyword,String fithpath,int pagenumber) throws Exception {String keywordsurl = "http://www.quora.com/search?q=" + keyword;;         //拼接地址QuoraKeywordsPage.crawlerQuestionbyKeywords(keywordsurl,fithpath,pagenumber);           //爬取关键词对应的页面}public static void showHelp(CmdLineParser parser){System.out.println("QuoraKeywordsCrawler [options ...] [arguments...]");parser.printUsage(System.out);}
}

关于程序运行

将该程序打包成jar之后,调用windows平台下的命令行。

java -jar Crawer.jar -keyword java -outputfile D:/java.xls -pn 10

程序运行结果为:

以下是数据采集到excel中的结果:

另外,本程序的可运行.exe软件,已上传到github

国外问答网站Quora数据的爬虫 Java相关推荐

  1. 问答网站Quora副总裁杨蕾博士:让知识改变世界

    ????点击上方蓝字星标"Robinly",获取更多重磅AI访谈 Robin.ly 是立足硅谷的视频内容平台,服务全球工程师和研究人员,通过与知名人工智能科学家.创业者.投资人和领 ...

  2. java 开发用到网络爬虫,抓取汽车之家网站全部数据经历

    经历了两个礼拜的折腾,某某知名网站的数据终于到手了.犯罪没被发现这种心情感觉很爽. 说一下我的犯罪经历,之前公司总是抓取某某网站数据,可能是被发现了.某某网站改变了策略.通过各种技术终止了我们的行为, ...

  3. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索

    Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...

  4. scrapy爬取知名问答网站(解决登录+保存cookies值+爬取问答数据)--完整版完美解决登录问题

    菜鸟写Python:scrapy爬取知名问答网站 实战(3) 一.文章开始: 可能看到这篇文章的朋友,大多数都是受慕课网bobby讲师课程的影响,本人也有幸在朋友处了解过这个项目,但是似乎他代码中登录 ...

  5. python爬视频网站数据_python爬虫基础应用----爬取无反爬视频网站

    一.爬虫简单介绍 爬虫是什么? 爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序. 爬虫程序包括哪些模块? python中的爬虫程序主要包括,re ...

  6. python爬虫代码-学Python=写爬虫?不用代码也能爬下95%网站的数据!

    你好,这里是BIMBOX,我是老孙. 前些天BOX群里一位小伙伴问我们,现在市面上有一千多块钱的Python网络课程,两个月学完,能入门网络爬虫,大部分网站的数据都可以爬下来,这个学费值不值得? 我们 ...

  7. python爬虫,g-mark网站图片数据爬取及补坑

    应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...

  8. java国外著名网站

    java国外著名网站 1. Java的老家: 链接:www.javasoft.com java.sun.com 简介:这是查找各种Java官方资源的好地方,我们可以在这里下载到最新的JDK.Java工 ...

  9. 20个仿Quora的免费问答网站程序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 接触网站 ...

最新文章

  1. 基于OpenCV与tensorflow实现实时手势识别
  2. python国防_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...
  3. 邓海建:让网约车成为智慧城市的“老司机”
  4. UITextField常用属性
  5. fckeditor编辑器上传文件出现invalid Request问题解决
  6. iOS开发-文件上传原理
  7. 前端学习(1990)vue之电商管理系统电商系统之自定义时间过滤器
  8. OJ1053: 正弦函数(纯数学思想和编程思想两种方法实现)(C语言)
  9. html怎么根据控IE制台找错误,IE调试网页之三:控制台查看错误和状态
  10. atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
  11. 传统音乐制作与计算机音乐制作,论电脑音乐制作与传统音乐制作的方式对比
  12. java过载保护_微服务过载保护原理与实战
  13. LeetCode1818:绝对差值和
  14. 利用adsl拨号服务器VPS构建代理IP池
  15. Linux中指令的前缀命令格式
  16. MySQL-innobackupex备份工具
  17. iOS 15 导航栏(Navigation)变白(导航栏不见)
  18. 原创,PHP简单的查询火车时刻表程序
  19. eoLinker-AMS接口管理系统 项目管理教程
  20. ElasticSearch painless脚本实现自定义打分排序

热门文章

  1. XML DOM 节点类型(Node Types)
  2. local variable 'xxx' referenced before assignment
  3. 行为设计模式 - 中介设计模式
  4. C#中使用ajax请求
  5. 分布式系统关注点(21)——构建「易测试」系统的“六脉神剑”
  6. JSP+Servlet+C3P0+Mysql实现的azhuo商城
  7. 【Day08】请简述虚拟 DOM 中 Key 的作用和好处
  8. 【Python】Python库之机器学习
  9. sql语句基础学习(不涉及多表查询)
  10. Linux中SDIO命令,Linux MMC/SD/SDIO体系结构