Java数据抓取经验【转载】
本人担任职友集的java工程师五年,其中抓取数据占主要的一部分,抓取的信息只要有两部分,职位和简历,其中职位的抓取量为日均插入量为30万,更新量 为60万,抓取全国300多个人才网站。职友集(现在改名为跳哪网)现在是全国职位量最高的垂直搜索引擎。月均广告收入约20万左右。当然这是经过我们团 队的努力。
我们在职位抓取方面是下了很大的一番功夫,使我们的职位量无法被人超越,首先现在很多人才网站为人防止其它网站抓取它的信息,都在封IP,尤其是中华英才
网,我们为了向我们的用户提供大而全的职位信息,时刻作出我们的努力。我们为了解决封IP的问题,我取采取了多代理的方式。充分而均衡的运用多IP,有效
的解决了封IP的问题。除了封IP的问题外,有一些网站为了防止其它人抓取他的企业联系信息,把企业的联系信息如电话号码,邮箱等放在图片中,我们为了我
们的用户,可谓是呕心沥血地解决问题。我们经过我们的长期研究,可以有效地读取图片中的文字信息。为我们的访客提供良好的信息体验。
我们的抓取在提取网站信息方面是用正则表达式,而不是用其它的,这样是有我们的理由的,因为如果有带有浏览器性质的插件,这样会为整个抓取带来很多风险。
首先,在解析脚本方面会存在不稳定因素,可能会令整个程序运行得很慢,很耗CPU资源。可能会因为某个脚本的运行不当而令整台服务器down机。而且用浏
览器式插件。速度很慢,不能满足日常的抓取需求。所以我们放弃了用浏览器式插件。而改用javahttpURLConnection来抓取网页的html
源代码,用正则表达式提取网页的特定内容。然而正则表达式用起来虽然很方更,但也存在一个比较重要的问题,如果一不小心有一条正则表达式写错了,会相当耗
CPU资源,CPU的占用率会突然提升起来。而且会一直居高不下。我们为了能解决之个问题,我们修改了java.util.regex.Pattern
类,一但正则表达式长期占用CPU资源高居不下,程序自动终止正则的匹配,并记录错误。方便查看那一条正则写错了。在抓取时有可能会遇到需要登录才能获取
页面的情况。而且有时登录时需要输入验证码等情况,我在抓取方面,对ocr都有很深入的研究,大部分不太复习的验证码都可以通过编程方法破解。实现自动登
录时通过提交通过提交通数,然后获得cookie,然后再通过这个cookie获得那些登录后才能看到的页面。
Java数据抓取经验【转载】的更多相关文章
- Java实现多种方式的http数据抓取
前言: 时下互联网第一波的浪潮已消逝,随着而来的基于万千数据的物联网时代,因而数据成为企业的重要战略资源之一.基于数据抓取技术,本文介绍了java相关抓取工具,并附上demo源码供感兴趣的朋友测试! ...
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上
Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...
- [nodejs,expressjs,angularjs2] LOL英雄列表数据抓取及查询显示应用
新手练习,尝试使用angularjs2 [angularjs2 数据绑定,监听数据变化自动修改相应dom值,非常方便好用,但与传统js(jquery)的使用方法会很不同,Dom操作也不太习惯] 应用效 ...
- 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单
基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...
- 如何使用JAVA语言抓取某个网页中的邮箱地址
现实生活中咱们常常在浏览网页时看到自己需要的信息,但由于信息过于庞大而又不能逐个保存下来. 接下来,咱们就以获取邮箱地址为例,使用java语言抓取网页中的邮箱地址 实现思路如下: 1.使用Java.n ...
- [原创.数据可视化系列之十二]使用 nodejs通过async await建立同步数据抓取
做数据分析和可视化工作,最重要的一点就是数据抓取工作,之前使用Java和python都做过简单的数据抓取,感觉用的很不顺手. 后来用nodejs发现非常不错,通过js就可以进行数据抓取工作,类似jqu ...
- 爬虫---selenium动态网页数据抓取
动态网页数据抓取 什么是AJAX: AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML.过在后台与服务器进行少量数据交换,Ajax 可以使网页 ...
随机推荐
- 图片处理 Pillow
Pillow 在python3下用PIL做图像处理 Python图像处理库:Pillow 初级教程 from PIL import Image im = Image.open('22.gif') pr ...
- Java [leetcode 32]Longest Valid Parentheses
题目描述: Given a string containing just the characters '(' and ')', find the length of the longest vali ...
- Sharepoint中用treeview来显示组织机构的人员状态的webpart
转:http://www.cnblogs.com/virusswb/archive/2009/04/28/1445517.html
- UVA 1637 Double Patience
题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 解法:记忆化搜索,状态压缩.一开始我想在还没拿的时候概率是1,然后往全拿光推···样例过不去···后来觉得推反了 ...
- SpannableStringBuilder 和 SpannableString
EditText: 通常用于显示文字,但有时候也需要在文字中夹杂一些图片,比如QQ中就可以使用表情图片,又比如需要的文字高亮显示等等,如何在android中也做到这样呢? 记得andr ...
- POJ2115 C Looooops 模线性方程(扩展欧几里得)
题意:很明显,我就不说了 分析:令n=2^k,因为A,B,C<n,所以取模以后不会变化,所以就是求(A+x*C)%n=B 转化一下就是求 C*x=B-A(%n),最小的x 令a=C,b=B-A ...
- Selenium的PageFactory在大型项目中的应用
出路出路,走出去了,总是会有路的:困难苦难,困在家里就是难. 因为最近遇到的技术问题一直没找到可行的解决办法,一直在翻看selenium的源代码,之前写测试代码的时候就是拿来即用,写什么功能啊,就按手 ...
- How To Set Up Nginx Server Blocks (Virtual Hosts) on Ubuntu
sudo apt-get update sudo apt-get install nginxsudo mkdir -p /var/www/example.com/html sudo chown -R ...
- linux内核-红黑树
//rbtree.h /* Red Black Trees (C) 1999 Andrea Arcangeli <andrea@suse.de> This program ...
- [LeetCode]Evaluate Reverse Polish Notation(逆波兰式的计算)
原题链接:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/ 题目描述: Evaluate the value of a ...