我正在抓取r / theonion并将标题写入文本文件onion.txt。之后,我打算抓取r /
nottheonion并将标题写入文本文件nottheonion.txt。我成功写入了onion.txt,但未写入nottheonion.txt。
var onion_url = "https://www.reddit.com/r/theonion";
var not_onion_url = "https://www.reddit.com/r/nottheonion";
var promise = new Promise(function(resolve, reject) {
request(onion_url, function(error, response, html) {
if (error) {
console.log("Error: " + error);
}
var $ = cheerio.load(html);
$("div#siteTable > div.link").each(function(idx) {
var title = $(this).find('p.title > a.title').text().trim();
console.log(title);
fs.appendFile('onion.txt', title + '\n');
});
});
});
promise.then(function(result) {
request(not_onion_url, function(error, response, html) {
if (error) {
console.log("Error: " + error);
}
var $ = cheerio.load(html);
$("div#siteTable > div.link").each(function(idx) {
var title = $(this).find('p.title > a.title').te . xt().trim();
console.log(title);
fs.appendFile('not_onion.txt', title + '\n');
});
});
}, function(err) {
console.log("Error with scraping r/nottheonion");
});
无论如何,如果要使用Promise,请使用request- promise
和fs- promise
简化代码,而不要重复使用函数。
var rp = require('request-promise');
var fsp = require('fs-promise');
var onion_url = "https://www.reddit.com/r/theonion";
var not_onion_url = "https://www.reddit.com/r/nottheonion";
function parse(html) {
var result = '';
var $ = cheerio.load(html);
$("div#siteTable > div.link").each(function(idx) {
var title = $(this).find('p.title > a.title').text().trim();
console.log(title);
result += title + '\n';
});
return result;
}
var append = file => content => fsp.appendFile(file, content);
rp(onion_url)
.then(parse)
.then(append('onion.txt'))
.then(() => console.log('Success'))
.catch(err => console.log('Error:', err));
rp(not_onion_url)
.then(parse)
.then(append('not_onion.txt'))
.then(() => console.log('Success'))
.catch(err => console.log('Error:', err));
这未经测试。
我正在尝试刮一个网站学习python和网页刮。特别是,我试图在这个页面上收集足球数据:https://www.whoscored.com/regions/108/tournaments/5/seasons/7468/stages/16548/playerstatistics/italy-serie-a-2018-2019 我的主要问题是如何刮除主数据表的所有页面,而不仅仅是第一个。我试图用sele
我使用的事件系统基于这个问题中的建议:在Java中创建自定义事件 我在一个组件中实现了它,以从组件上的按钮处理和传递事件。我将组件放入它自己的jar文件中。然后我在另一个项目中使用了组件和jar文件,当我试图运行用它创建的程序时,它给了我以下错误: Java . lang . illegalaccessexception:类事件。EventHandler无法使用修饰符“public”访问类outf
我对Gson将集合更改为Json对象有问题。这是我的代码: 这是输出: JsonString会被创建,但只会使用最新的对象一次又一次地创建。我做错了什么?
我按照教程的说明创建了一个新项目,在指定的位置更改了两个文件的名称。当我尝试运行它时,AS窗口底部的日志文件显示: 检索项的父项时出错:找不到与给定名称“Android:TextPapearance.Material.Widge.Button.Inverse”匹配的资源。 错误:(2)检索项的父项时出错:找不到与给定名称'Android:Widget.Material.Button.Colored
问题内容: 这不是让我输入我的名字,但是年龄确实可以。我知道我可以更改语句的顺序,但是还有另一种方法可以做到吗? 问题答案: 您的问题是,下一个int不考虑输入在您的姓名部分中的换行符。因此,名称返回为空白。 您可以通过两种方式更改代码: 要么 我个人喜欢第二种方式。
我可以使用本地主机上的Codeigniter将文件完美地上传到uploads文件夹。然而,当我试图上传到服务器上时,我得到了这个错误。我尝试了不同类型的文件。txt。博士。xls。jpg等,这些都可以在本地主机上使用。我已经查看了MIME文件和图像/jpeg以及我需要的所有其他文件类型('doc'= 有人知道为什么不允许我上传文件吗。 控制器: 型号: