代理IP切换

当爬取大众点评时会出现爬取不到数据的情况, 这是怎么回事呢? 原因是采集爬虫所使用的IP被目标网站屏蔽了, 这个问题, 请使用神箭手提供的代理IP切换.

点此查看神箭手提供的代理IP种类以及如何开启或关闭代理IP切换.

代理IP切换分两种情况: “自动切换”“自定义切换”.

注意:

1. 在神箭手应用中, 代理IP切换之后, 会自动重新爬取当前网页以及继续爬取其他网页, 无需用户手动处理;

2. 代理IP切换之后, 神箭手会自动帮您切换UserAgent, 如果需要使用固定的UserAgent请求网页, 请调用site.setUserAgent进行设置;

3. 下面两个栗子中, 默认已经开启代理IP切换.

自动切换

如果代理IP过期发送HTTP请求返回的状态码是403, 则代理IP会自动切换, 无需进行其他操作.

自定义切换

在自动切换的同时, 用户也可以通过回调函数自定义何时切换代理IP. 通过在isAntiSpider回调函数中判断访问网页时是否被目标网站屏蔽, 来判断是否切换代理IP. 如果判断被目标网站屏蔽, 则切换代理IP; 否则, 不会切换代理IP.

通用栗子:

var configs = {
// configs的成员
...
};
configs.isAntiSpider = function(url, content, page) {
// 判断"content"中是否包含"您访问网页过于频繁"
if (content.indexOf("您访问网页过于频繁") !== -1) {
// 返回"true",
// 表示判断此时被目标网站屏蔽了,
// 神箭手会切换一次代理IP后自动重新爬取
return true;
}
// 默认返回"false",
// 判断未被目标网站屏蔽
return false;
};

由于代理IP切换后, 先前的HTTP请求所添加的Cookie等参数会被清除, 若打算给后续HTTP请求添加参数, 就需要调用onChangeProxy回调函数来添加参数.

通用栗子:

代理IP切换后, 给后续HTTP请求添加Cookie

var configs = {
// configs的成员
...
};
configs.onChangeProxy = function(site, page) {
// 每次切换代理IP后, 都会向"site"对象中添加"Cookie"
site.addCookie("SUB", "XXX");
};
configs.isAntiSpider = function(url, content, page) {
if (content.indexOf("Anti_Spider") !== -1) {
return true;
}
return false;
};