gpt4 book ai didi

node.js - 使用谷歌云功能进行抓取,它已完成,状态代码为: 304

转载 作者:行者123 更新时间:2023-12-02 12:03:14 25 4
gpt4 key购买 nike

我正在尝试谷歌云功能,它可以工作,但以状态代码 304 结束,不确定原因是什么。下面是代码,

//gcloud beta functions deploy scrapeGitCollection --trigger-http
var cheerio = require('cheerio');
var request = require('request');

function getDateTime() {

var date = new Date();

var hour = date.getHours();
hour = (hour < 10 ? "0" : "") + hour;

var min = date.getMinutes();
min = (min < 10 ? "0" : "") + min;

var sec = date.getSeconds();
sec = (sec < 10 ? "0" : "") + sec;

var year = date.getFullYear();

var month = date.getMonth() + 1;
month = (month < 10 ? "0" : "") + month;

var day = date.getDate();
day = (day < 10 ? "0" : "") + day;

return year + "/" + month + "/" + day + " " + hour + ":" + min + ":" + sec;

}

var scrape = new Promise((resolve, reject) =>{
var text;
var array = [];

request({
method: 'GET',
url: 'https://github.com/collections'
}, function(err, response, body) {
if (err) return reject(err);

// Tell Cherrio to load the HTML
$ = cheerio.load(body);
$('.col-10 h2 a').each(function(i, element) {
var node = $(this);
text = node.text();
//console.log(text);
array.push(text);
});

text = JSON.stringify(array);
console.log(text);
resolve(text);
});
});

// [START functions_helloworld_http]
/**
* HTTP Cloud Function.
* @param {Object} req Cloud Function request context.
* @param {Object} res Cloud Function response context.
*
*/
exports.scrapeGitCollection = (req, res) => {
console.log('Triggered @ '+getDateTime());
scrape.then((data) =>{
res.send(`Hello ${data || 'World'}!`);
}).catch( (errorMessage) =>{
console.error(errorMessage);
});

};
// [END functions_helloworld_http]

这是我在 stackdriver 中看到的日志

2018-07-05 22:19:39.181 IST
scrapeGitCollection
x6mbdi17rdj7
Function execution took 7 ms, finished with status code: 304
{
insertId: "000000-4f8925ba-a5a5-4f0e-9c32-906e91374e32"
labels: {…}
logName: "projects/btd-in-16062018/logs/cloudfunctions.googleapis.com%2Fcloud-functions"
receiveTimestamp: "2018-07-05T16:49:45.425756526Z"
resource: {…}
severity: "DEBUG"
textPayload: "Function execution took 7 ms, finished with status code: 304"
timestamp: "2018-07-05T16:49:39.181731257Z"
}

出于调试目的,我在 scrape() 函数中添加了以下行,它没有出现在日志中。

console.log(text);

如果我强行说如下,我会得到上面的 console.log 文本和结果。

res.status(200).send(`Hello ${data || 'World'}!`);

我不想强行说status(200)。想要解决我之前遇到的 304 问题。

最佳答案

根据 Mozilla 的文档,the 304 status code指示请求已重定向,可能重定向到缓存的资源。我相信这与响应的正文始终相同有关,因为如果您将响应的行更改为

res.send(`Hello ${data || 'World'}!` + getDateTime());

然后你会看到响应代码每次都是200。

请注意,304 不是错误。错误状态代码为 400 and above .

关于node.js - 使用谷歌云功能进行抓取,它已完成,状态代码为: 304,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com