Gem 让爬虫轻松一点~(一)

debbbbie · 2013年12月21日 · 最后由 suger 回复于 2020年04月08日 · 8246 次阅读

在信息大爆炸的互联网,数据多的烦不胜数,想要人为的统计某类信息,恐怕越来越难了,这时候就需要爬虫的帮助了,一如 360 爬取百度的百科、知道一淘爬取各大电商的产品、用户评论百姓网从赶集网页面上收集其用户公开的 QQ 邮箱并发送推广邮件。。。

随着爬虫的发展,已经严重危害了目标网站的服务质量及数据安全,于是他们开始各种围追堵截。道高一尺魔高一丈,我们的爬虫终究能够突破层层壁垒,拿到想要的数据。

今天,我们就做一件事,让爬虫更智能。一般的服务器都会判断访问来源的 User-Agent,适时的更换一下你的 User-Agent,无非是个明智之举。 Gem useragents,已经为您封装了此项需求,只需拿来即用就行。用法非常简单:

首先安装一下本 gem,gem install useragents

然后对代码:

require 'httparty'

HTTParty.get('http://ruby-china.org')

更改成这样即可


require 'useragents'

agent = UserAgents.rand() # 从 500 多个 User-Agent 中随机选出一个
# => "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36"
HTTParty.get('http://ruby-china.org', :headers => {'User-Agent' => agent})

useragents 全部收集于流行浏览器 Chrome, Opera, Safari, InternetExplorer, Firexof,并剔除了其中的老旧版本,最终保留了 500 多个 User-Agent,并会定时更新。

附上 github 地址 https://github.com/debbbbie/useragents-rb,欢迎 fork 或提交 issues

这个比较赞,如何收集来的?

LZ 在明知

爬虫的发展,已经严重危害了目标网站的服务质量及数据安全

的情况下,却提供工具,这算不上一种助纣为虐? 我非常赞赏 LZ 的分享精神,但对此事的出发点持保留态度。

顶 3 楼 LZ 在明知爬虫的发展,已经严重危害了目标网站的服务质量及数据安全的情况下,提供工具这也算是一方面的助纣为虐了 对于蜘蛛,原本应该是体现的越明显越好,但是现在变成了东躲西藏,UA 也没有体现。现在不想让爬虫爬都不行了

助纣为虐。。。

噗,肿么找来了这么多鄙视。。以交流技术的心态看到好不好。。。

楼主这是先在前面使劲的刨一个大坑,然后纵身往下一跃……

不得不赞一个

说出来都是泪啊

这不太合适吧~ , 你自己也说了这么干有违业界规范 ,怎么话锋一转 , 自己却干起这勾当了 ...

看来撰文时候需要注意啊。。。

爬虫的速度,一般都有啥办法提升?

还有一种情景,我有大量的 facebook 的 oauth token,需要抓取用户最新的 feed,我一分钟能拿多少个人的数据,有啥办法提高速度?多线程应该算一种吧,有没有其他好的思路?

#12 楼 @debbbbie 对的,假设我在服务器去拉用户的 feed

多备些服务器,多备些代理试试。。

有好用的爬虫库否?

嗯,不能爬得太频繁啊,否则封 ip 很容易。。。多搞些代理才是王道;或者直接把抓取和解析任务交给客户端 webkit 来干,server 只提供破解规则啥的

#6 楼 @debbbbie 支持一下。技术是双刃剑,看用在什么人手里。

#17 楼 @cisolarix 技术明显是只有害处的 ...

说世界上有很多坑,瞧,我也挖了一个

最近整好有写爬虫的想法。顶一个!哈哈

@debbbbie 啥时候出 二 啊?

#23 楼 @cisolarix 年前估计没戏了。。。杂事太多,啥时候出品第一个圈你哈😊

不错,赞一个~

用代理的话,最容易出验证码了,这个咋解决?

可以使用高质量的代理,www.16yun.cn

需要 登录 后方可回复, 如果你还没有账号请 注册新账号