文档章节

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地址,本人感觉这有点违反网络安全准则。

 

© 著作权归作者所有

共有 人打赏支持
JAVA码猿
粉丝 10
博文 58
码字总数 43714
作品 0
海淀
程序员
为什么Python成了开发AI的主流语言?Java系列、Ruby等编程语言不行吗?

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

柯西带你学编程
05/29
0
0
33款可用来抓数据的开源爬虫软件工具

要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。 爬虫,即网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫...

Airship
2015/11/09
0
1
Java爬虫框架 - SeimiCrawler

SeimiCrawler An agile,powerful,distributed crawler framework. SeimiCrawler的目标是成为Java世界最好用最实用的爬虫框架。 简介 SeimiCrawler是一个敏捷的,独立部署的,支持分布式的Jav...

无极小子
2015/11/10
0
5
用兴趣去正面刚人家的专业,会成功吗?

我在校学的是电子专业,最后发现学校的培养方向是电子材料方向的,个人感觉本科材料不容易找到工作,所以靠兴趣学习Python,Java,前端部分,数据库。目前暂时通过Python制作了个人网站,也是...

代码打碟手
09/15
0
0
使用Selenium来抓取动态加载的页面

一般的爬虫都是直接使用http协议,下载指定url的html内容,并对内容进行分析和抽取。在我写的爬虫框架webmagic里也使用了HttpClient来完成这样的任务。 但是有些页面是通过js以及ajax动态加载...

黄亿华
2013/07/26
0
33

没有更多内容

加载失败,请刷新页面

加载更多

中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
14分钟前
0
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
19分钟前
0
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
26分钟前
0
0
C++11 智能指针

C++11提供了三个智能指针,std::shared_ptr,std::unique_ptr,std::weak_ptr。最常用的是shared_ptr和unique_ptr。 (1)std::shared_ptr shared_ptr是共享指针,通过在控制块中增加引用计数...

yepanl
27分钟前
0
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部