文档章节

记录网页爬虫注意的几个问题

叶大侠
 叶大侠
发布于 2017/07/08 16:18
字数 1326
阅读 41
收藏 0
点赞 0
评论 0

设置合理的user-agent

一些站点会把这个当作很基本的过滤条件,我们就不碰壁了,直接找个浏览器粘贴一个,有些文章介绍用一些爬虫的user-agent,但是对方可能会有相关的爬虫服务器的 iplist,不过这种情况不多见,可以试一下。

设置合理的爬取间隔

过于频繁的流量很容易被监控到,当然除了一些没人管的站点,通常请求ip会被对方禁用一段时间,严重的可能会拉入黑名单,这就浪费掉一个 ip 地址了。如果你不是很急的话,我一般设置个 1 到 10 秒的随机访问间隔,单线程执行,慢慢爬。一般来说很多站点都能接受这样的方式,也不会给对方运维人员造成压力,如果还有限制同个 ip 的访问次数,那我们还有代理招。

需要登录权限

有登录就有注册,以前很多注册是需要验证邮箱,通过SMTP协议读取邮件内容实现自动化是个思路,前提你也要有很多邮箱地址,牛逼的你可以自己搭建个邮件服务器,要多少有多少。现在很多是通过手机号码的验证码了,这个就麻烦了,首先要有很多设备插很多sim卡接收短信,然后还要在这些设备上把数据传到你运行的那台机子解析出验证码才能把整个流程自动化。反正我是没试过,一般我都是手工注册几个。

登录的话就会简单一些,把用户名和密码post上去之后根据服务端返回的Set-Cookie设置好相关请求头就行了,甚至有些框架都帮你处理好了。如果需要验证码的话,出门左拐去购买破解验证码的接口或者自己实现吧,拿到凭证后就可以在相关页面里面横冲直撞了。当然,你也可以像我一样手动在浏览器上登录,拿到Set-Cookie之后在进行后面的操作。

增量爬取

如果爬的内容非常多,你永远也不知道在什么时候就 GameOver 了,因此一定要保存好你的进度,通常来说抓取工作都很重,抓到半天然后从头开始,It sucks ! 多写一点代码换来的好处是值得的。

代理魔法好

关于拉内容,这里介绍的是终极大招了。有了代理服务器,你就相当于找到了多个帮你干活的小弟,而且还是远程指挥,被封了也不会影响到你的本尊。

代理的来源:你可以自己用工具去扫描全网找到可用的免费代理,也可以像笔者一样偷懒去购买一些可用的代理。

代理的使用策略:你可能拥有了便宜甚至免费的代理地址,但是这里面很多可能都没法使用,或者现在能用,待会就不能用了,因此在使用之前应该测试一下,及时移除不能用的地址,提高效率。另外,注意不要用一个代理地址连续范围,笔者的策略一般是每个请求顺序换一个代理地址,如果数量足够多的前提下,你可以尽可能地提升你的爬取线程或者进程数,由于每个 ip 的访问间隔足够长,这样也不会被封 ip 。

内容解析

在没认识Jsoup之前,笔者一般通过正则表达式和字符串的处理来滤出想要的内容,如果你还在拼难写的正则表达式,不妨可以试一下 Jsoup 。

Ajax异步内容

现在很多单页的应用都是先把 js 和基本的页面框架先加载,然后在异步请求一些其他的内容,比如很多的下拉到底部请求下一页的列表数据。对于这样的情况,我建议还是读一下它的 js 代码,然后模拟这个过程,这样爬取效率会更高一些;另外也可以selenium这样的工具来模拟浏览器的执行,这个笔者还没用过。

总结

抓取信息其实是个攻与防的过程,总结规律,多测试和践行你的想法,找到合适的策略。最后,善用工具,但行好事哈~

参考

  1. java 爬虫框架:webmagic
  2. html解析框架:jsoup

这里也有我发布的文章:https://yedaxia.github.io

© 著作权归作者所有

共有 人打赏支持
叶大侠

叶大侠

粉丝 56
博文 44
码字总数 67312
作品 5
广州
程序员
Crawler4j的使用

Crawler4j的使用 (以下内容全部为转载,供自己查阅用) 下载地址: http://code.google.com/p/crawler4j/ Crawler4j的使用 网上对于crawler4j这个爬虫的使用的文章很少,Google到的几乎没有...

帅的不像男的 ⋅ 2016/06/07 ⋅ 0

使用python,scrapy写(定制)爬虫的经验,资料,杂。

近期找工作略不顺。技术无用。晚上写下了这点东西。 首先说下最近在找工作的x的大概相关技术加点路线。py 3年+,linux日常熟练,限于不擅web、手机app开发,一直无太好的可展示的东西。前段时...

斑ban ⋅ 2013/12/27 ⋅ 7

无头浏览器 Puppeteer 初探

作者简介 轻声 蚂蚁金服数据前端 我们日常使用浏览器的步骤为:启动浏览器、打开一个网页、进行交互。而指的是我们使用脚本来执行以上过程的浏览器,能模拟真实的浏览器使用场景。 有了无头浏...

蚂蚁金服ProtoTeam ⋅ 2017/10/17 ⋅ 0

Puppeteer 初探

我们日常使用浏览器或者说是有头浏览器时的步骤为:启动浏览器、打开一个网页、进行交互。 无头浏览器指的是我们使用脚本来执行以上过程的浏览器,能模拟真实的浏览器使用场景。 有了无头浏览...

赖小赖小赖 ⋅ 2017/10/19 ⋅ 0

python利用beautifulsoup+selenium自动翻页抓取网页内容

python利用beautifulsoup+selenium自动翻页抓取网页内容 Uncle Chen2016-12-11446 阅读 python技术爬虫 一、背景 记录一次周末在家速成的爬虫实现之旅。受人之托,想要把这个页面 http://bai...

Uncle Chen ⋅ 2016/12/11 ⋅ 0

Python 编写知乎爬虫实践

1、爬虫的基本流程 网络爬虫的基本工作流程如下: 首先选取一部分精心挑选的种子 URL 将种子 URL 加入任务队列 从待抓取 URL 队列中取出待抓取的 URL,解析 DNS,并且得到主机的 ip,并将 UR...

xrzs ⋅ 2012/06/16 ⋅ 0

互联网网站的反爬虫策略浅析

因为搜索引擎的流行,网络爬虫已经成了很普及网络技术,除了专门做搜索的Google,Yahoo,微软,百度以外,几乎每个大型门户网站都有自己的搜索引擎,大大小小叫得出来名字得就几十种,还有各...

xrzs ⋅ 2013/11/30 ⋅ 4

[转] 互联网网站的反爬虫策略浅析

因为搜索引擎的流行,网络爬虫已经成了很普及网络技术,除了专门做搜索的Google,Yahoo,微软,百度以外,几乎每个大型门户网站都有自己的搜索引擎,大大小小叫得出来名字得就几十种,还有各...

鉴客 ⋅ 2010/11/24 ⋅ 0

基于PyHusky的分布式爬虫原理及实现

原理 爬虫是我们获取互联网数据的一个非常有效的方法,而分布式爬虫则是利用许多台机器协调工作来加快抓取数据效率的不二途径。分布式爬虫是由访问某些原始网址开始,在获取这些网址的内容后...

happengft ⋅ 2017/04/06 ⋅ 0

一个轻量级家用爬虫

最近需要收集资料,在浏览器上用另存为的方式实在是很麻烦,而且不利于存储和检索。所以自己写了一个小爬虫,在网上爬东西,迄今为止,已经爬了近百 万张网页。 现在正在想办法着手处理这些数...

蜗牛奔跑 ⋅ 2015/06/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 28分钟前 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 昨天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 昨天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部