为什么80%的码农都做不了架构师?>>>   

设置合理的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

转载于:https://my.oschina.net/daxia/blog/1216588

记录网页爬虫注意的几个问题相关推荐

  1. 网页爬虫的设计与实现(Java版)

    最近为了练手而且对网页爬虫也挺感兴趣,决定自己写一个网页爬虫程序. 首先看看爬虫都应该有哪些功能. 内容来自(http://www.ibm.com/developerworks/cn/java/j-l ...

  2. 如何设计一个网页爬虫

    作为长期深耕在爬虫行业的程序猿来说,对于设计一个网页爬虫想必很简单,下面就是一些有关网页爬虫设计的一些思路,可以过来看一看. 第一步:简述用例与约束条件 把所有需要的东西聚集在一起,审视问题.不停的提 ...

  3. 利用Fiddler手机抓包对ONE·APP网页爬虫实现电影资讯微信Java开发

    前言 好久没写博客了,打算把之前做的一个电影评分资讯推送的微信开发全程记录一下,适合对网络爬虫.微信开发感兴趣的童鞋.在教程开始之前,我想先引出两个问题(这次写博客假装很有条理的样子= =) 1. 为 ...

  4. 利用Fiddler手机抓包对ONE APP网页爬虫实现电影资讯微信Java开发

    前言 好久没写博客了,打算把之前做的一个电影评分资讯推送的微信开发全程记录一下,适合对网络爬虫.微信开发感兴趣的童鞋.在教程开始之前,我想先引出两个问题(这次写博客假装很有条理的样子= =) 1. 为 ...

  5. python 静态网页_Python静态网页爬虫相关知识

    想要开发一个简单的Python爬虫案例,并在Python3以上的环境下运行,那么需要掌握哪些知识才能完成一个简单的Python爬虫呢? 爬虫的架构实现 爬虫包括调度器,管理器,解析器,下载器和输出器. ...

  6. LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口

    目录 1114. 按序打印 解法 1115. 交替打印FooBar 解法 1116. 打印零与奇偶数 解法 1117. H2O 生成 解法 1118. 设计有限阻塞队列 解法 1195. 交替打印字符 ...

  7. 【谷歌推网页爬虫新标准,开源robots.txt解析器】

    https://www.toutiao.com/a1638031116246019 [谷歌推网页爬虫新标准,开源robots.txt解析器] 对于接触过网络爬虫的人来说 robots.txt 绝不陌生 ...

  8. python网页爬虫-python网页爬虫浅析

    Python网页爬虫简介: 有时候我们需要把一个网页的图片copy 下来.通常手工的方式是鼠标右键 save picture as ... python 网页爬虫可以一次性把所有图片copy 下来. ...

  9. python网页爬虫-Python网页爬虫

    曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python.离开腾讯创业后,第一个作品课程图谱也是选 ...

最新文章

  1. FPGA 控制 FLASH 之 Startup 原语使用相关链接
  2. Javascript网页滚动方法
  3. 【图像处理opencv】_Jupyter 更改文件默认保存目录
  4. 数独项目--关键代码展示:
  5. iOS开发拓展篇—音频处理(音乐播放器6)
  6. java输出重定向gui_Java – 将system.out.println重定向到JLabel
  7. 京东联合vivo针对vivo X Note推出先行者计划
  8. IBM语音识别系统实现错词率重大突破
  9. _itemmod_description
  10. sybase修改默认字符集为cp936
  11. 2021-05-26防火墙配置
  12. MySQL单表数据查询之分组数据查询之旅
  13. Chapter 6-Blurring Things Up之Using Alpha Channel
  14. KANZI入门第一篇之kanzi详解,教你轻松学kanzi
  15. readline library not found
  16. ZCMU - 1931: wjw的剪纸
  17. 五子棋游戏程序记录和复盘功能设置
  18. 1567. 乘积为正数的最长子数组长度 ●●
  19. Linux 源码分析 之 udp 分析 二 sendto
  20. 2021-06-26一文看尽深度学习中的20种卷积(附源码整理和论文解读)

热门文章

  1. oracle怎么小数中多余的零,关于小数中0的处理
  2. wechaty QR code not recognizable..
  3. Java设计模式(学习整理)---命令模式
  4. shell按行读取文件的常见几种方法
  5. python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫
  6. springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...
  7. Linux 下 VNC配置和使用(本机控制本机)
  8. Socket编程(C语言实现)——TCP协议(网络间通信AF_INET)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【多线程+循环监听】
  9. Dom4J的基本使用
  10. Swift 异常处理