文档章节

Java爬虫

JAVA码猿
 JAVA码猿
发布于 2017/05/22 12:10
字数 518
阅读 52
收藏 0

网络爬虫的道德与礼仪

白帽子。在采集那些不想被采集的网站时,其实存在一些非常符合道德和法律规范的理由,有些网站会表明哪些内容可以爬取,哪些不可以爬取。会有个白名单。

要想爬取某些网站的内容信息要做到以下几点:

1. 构造合理的 HTTP 请求头

        requests 模块还是一个设置请求头:

private static Header USER_AGENT = new BasicHeader(HttpHeaders.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20200101 Firefox/56.0");
private static Header UpgradeInsecureRequests = new BasicHeader("Upgrade-Insecure-Requests", "1");
private static Header Referer = new BasicHeader("Referer", "https://read.douban.com/");
private static Header Host = new BasicHeader("Host", "read.douban.com");
private static Header Accept = new BasicHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
private static Header AcceptEncoding = new BasicHeader("Accept-Encoding", "gzip, deflate, br");
private static Header AcceptLanguage = new BasicHeader("Accept-Language", "zh-CN,zh;q=0.8")

2. 设置 cookie 

写上你自己的cookie
private static Header Cookie = new BasicHeader("Cookie", "写上你自己的cookie");

在采集一些网站时 cookie 是不可或缺的。要在一个网站上持续保持登录状态,需要在多个页面中保存一个 cookie。有些网站不要求在每次登录时都获得一个新 cookie,只要保存一个旧的“已登录”的 cookie 就可以访问。

3. 正常的时间访问路径

应该尽量保证一次加载页面加载且数据请求最小化。如果条件允许,尽量为每个页面访问增加一点儿时间间隔;

多线程处理时让线程随机的睡一会儿。

4.   使用可变的远程 IP 地址

假如有条件的话,使用远程ip地址,本人感觉这有点违反网络安全准则。

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 自学 关于Static
下一篇: 分布式事务
JAVA码猿
粉丝 10
博文 62
码字总数 45401
作品 0
海淀
程序员
私信 提问
为什么Python成了开发AI的主流语言?Java系列、Ruby等编程语言不行吗?

导读 说道开发AI的语言,很多人说,不是Python吗?没错,Python是可以开发AI,但是不知道你们有没有想过,真的就只有Python才可以开发AI吗? 其实,像Java、Ruby也是开发AI很好的选择,但是为...

柯西带你学编程
05/29
0
0
并发编程 ThreadLocal源码分析

引入ThreadLocal的场景 最近在写项目的时候自己也有疑虑,因为这个项目涉及到爬虫,使用的WebMagic这款垂直爬虫框架 垂直式爬虫 垂直型爬虫关注内容与准确还有效率.比较常见的就是舆情项目,...

红色迷宫
07/28
0
0
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
0
0
构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

enosh
2015/01/09
0
2

没有更多内容

加载失败,请刷新页面

加载更多

强化学习在美团“猜你喜欢”的实践

1 概述 “猜你喜欢”是美团流量最大的推荐展位,位于首页最下方,产品形态为信息流,承担了帮助用户完成意图转化、发现兴趣、并向美团点评各个业务方导流的责任。经过多年迭代,目前“猜你喜...

美团技术团队
23分钟前
1
0
docker - 常用命令

1. docker服务的启动、停止、重启 [root@localhost ~]# service docker restartRedirecting to /bin/systemctl restart docker.service[root@localhost ~]# service docker stopRedir......

细肉云吞
26分钟前
3
0
安装CentOS 6.5 系统

一、安装CentOS 6.5 系统 1、选择第一个 "Install or upgrade an existing system" 2、选择跳过 “Skip” 3、直接下一步 4、建议初学者选择中文的,工作中选择 “English” 5、键盘选择 “美...

寰宇01
38分钟前
1
0
AR+ 实时音视频通话,虚拟与现实无缝结合

今年中旬 Google 在万众期待下推出了 ARCore,能将现实与数码完美无缝地融合在一起,丰富我们的现实世界。通过它开发者可以更加快速方便地在 Android 平台开发 AR 应用,凭借 AR 技术大量产品...

七牛云
38分钟前
1
0
手把手教你实现一个 Vue 进度条组件!

最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录。 来看下 npm 搜索组件时候的效果: so 下面咱们...

我的卡
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部