网络爬虫的道德与礼仪

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

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

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

03-18 03:16