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 可以使网页 ...
随机推荐
- python中的commands模块
commands模块用于调用shell命令 有3中方法: commands.getstatus() 返回执行状态 commands.getoutput() 返回执行结果 commands.ge ...
- 错误代码: 1005 Can't create table 'hibernate.bill' (errno: 150)
主要问题以及解决办法是: 1,MySQL支持外键约束,并提供与其它DB相同的功能,但表(外键表和外键主表)类型必须为 InnoDB,外键表和外键主表的类型都要是innoDB 建表约束语句: user表 ...
- 斜率优化dp(POJ1180 Uva1451)
学这个斜率优化dp却找到这个真心容易出错的题目,其中要从n倒过来到1的确实没有想到,另外斜率优化dp的算法一开始看网上各种大牛博客自以为懂了,最后才发现是错了. 不过觉得看那些博客中都是用文字来描述, ...
- 12月上旬poj其他题
poj3170 1,4两遍bfs: poj3171 改一改poj2376即可 poj3172 dfs+剪枝 其实增长速度很快,n<=40,题目吓你的: poj3661 比较经典的dp:设f[i, ...
- Mint Linuxubuntu 字体配置文件
<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fon ...
- 基于VPN搭建混合云架构需要考虑的网络因素
Joy Qiao from MSFT Wed, Jan 21 2015 8:44 AM 很多用户在搭建混合云架构时,会使用到微软Azure虚拟网络中的 VPN功能,来实现Azure中的虚拟网络与用户 ...
- (七)学习MVC之CodeFirst迁移更新数据库
1.首先在程序包管理控制台输入:enable-migrations -force ,然后回车: 问题1: The EntityFramework package is not installed on ...
- SharePoint 2010 出错! HTTP Error 503. The service is unavailable
转:http://544729.blog.51cto.com/534729/464087 昨天,公司的sharepoint 2010 无法打开,提示HTTP Error 503. The servic ...
- Apache配置虚拟目录和多主机头
呃,相当古老的话题了,不过网上的资料实在是太坑爹,无奈只能自己动手做个备忘了...这里不提虚拟目录和主机头的区别了,不懂得童鞋去面壁思过吧 多个虚拟目录 首先把Apache安装到D:\Program ...
- HDU4578 Transformation 线段树
这个题让我重新学习了加 乘 在区间的操作 题解:http://blog.csdn.net/guognib/article/details/25324025?utm_source=tuicool& ...