Apify 网络爬虫任务不稳定。在间隔几分钟的运行之间获得不同的结果
Apify web scraper task not stable. Getting different results between runs minutes apart
我正在构建一个非常简单的抓取工具,以从我也喜欢听的在线广播电台获取 'now playing' 信息。
它存储在他们网站上的一个简单的 p 元素中:
data html location
现在用的是标准apify/web-scraper我运行陷入了一个奇怪的问题。抓取有时有效,但有时不使用此代码:
async function pageFunction(context) {
const { request, log, jQuery } = context;
const $ = jQuery;
const nowPlaying = $('p.js-playing-now').text();
return {
nowPlaying
};
}
如果抓取工具有效,我会得到以下结果:
[{"nowPlaying": "Hangover Hotline - hosted by Lamebrane"}]
但如果没有,我会得到这个:
[{"nowPlaying": ""}]
而且两次刮擦之间仅相差 5 分钟。网站没有变化,数据始终以相同的方式呈现。我尝试选中所有复选框以规避安全性和不同的选项组合(使用 Chrome、使用隐身、忽略 SSL 错误、忽略 CORS 和 CSP),但不幸的是,这似乎无法解决问题。
Scraping instable
关于如何让这个抓取任务不断地return我需要的数据有什么建议吗?
如果能附上URL就好了,有助于我找出问题
根据你提供的信息,我猜想你要的数据是异步加载的。您可以使用 context.waitFor()
函数。
async function pageFunction(context) {
const { request, log, jQuery } = context;
const $ = jQuery;
await context.waitFor(() => !!$('p.js-playing-now').text());
const nowPlaying = $('p.js-playing-now').text();
return {
nowPlaying
};
}
你可以把函数传给wait,我会一直等到函数结果为真。您可以查看 doc.
我正在构建一个非常简单的抓取工具,以从我也喜欢听的在线广播电台获取 'now playing' 信息。
它存储在他们网站上的一个简单的 p 元素中: data html location
现在用的是标准apify/web-scraper我运行陷入了一个奇怪的问题。抓取有时有效,但有时不使用此代码:
async function pageFunction(context) {
const { request, log, jQuery } = context;
const $ = jQuery;
const nowPlaying = $('p.js-playing-now').text();
return {
nowPlaying
};
}
如果抓取工具有效,我会得到以下结果:
[{"nowPlaying": "Hangover Hotline - hosted by Lamebrane"}]
但如果没有,我会得到这个:
[{"nowPlaying": ""}]
而且两次刮擦之间仅相差 5 分钟。网站没有变化,数据始终以相同的方式呈现。我尝试选中所有复选框以规避安全性和不同的选项组合(使用 Chrome、使用隐身、忽略 SSL 错误、忽略 CORS 和 CSP),但不幸的是,这似乎无法解决问题。 Scraping instable
关于如何让这个抓取任务不断地return我需要的数据有什么建议吗?
如果能附上URL就好了,有助于我找出问题
根据你提供的信息,我猜想你要的数据是异步加载的。您可以使用 context.waitFor()
函数。
async function pageFunction(context) {
const { request, log, jQuery } = context;
const $ = jQuery;
await context.waitFor(() => !!$('p.js-playing-now').text());
const nowPlaying = $('p.js-playing-now').text();
return {
nowPlaying
};
}
你可以把函数传给wait,我会一直等到函数结果为真。您可以查看 doc.