Javascript 初学者JS问题&x2013;Js,存储数据、链接JSON文件和For循环
我是前端开发人员的新手。现在正在学习FCC Javascript课程,几乎完成了!虽然FCC擅长教授理论,但实际上他们并不教授任何基本的实际编程设置(编码环境、json等) 场景: 我想练习使用Puppeter从IMDB收集数据(收集标题、评级等)。我观看的教程向我展示了如何一次收集一个URL。我熟悉循环和数组。这是我到目前为止所拥有的。它与单独的URL一起生成标题和评级信息Javascript 初学者JS问题&x2013;Js,存储数据、链接JSON文件和For循环,javascript,node.js,arrays,web-scraping,puppeteer,Javascript,Node.js,Arrays,Web Scraping,Puppeteer,我是前端开发人员的新手。现在正在学习FCC Javascript课程,几乎完成了!虽然FCC擅长教授理论,但实际上他们并不教授任何基本的实际编程设置(编码环境、json等) 场景: 我想练习使用Puppeter从IMDB收集数据(收集标题、评级等)。我观看的教程向我展示了如何一次收集一个URL。我熟悉循环和数组。这是我到目前为止所拥有的。它与单独的URL一起生成标题和评级信息 const puppeteer = require('puppeteer'); //const jsonFile = r
const puppeteer = require('puppeteer');
//const jsonFile = require("./data.json") >> not sure if this is correct
//const numberOfUrls = jsonFile.url.length; >> not sure if this is correct
//const urlsArray = jsonFile.url; >> not sure if this is correct
(async () => {
let movieUrl = 'https://www.imdb.com/title/tt0944947/';
const browser = await puppeteer.launch({ headless: false});
const page = await browser.newPage();
await page.goto((movieUrl), { waitUntil: 'networkidle0' });
let data = await page.evaluate(() => {
let title = document.querySelector('div[class="title_wrapper"] > h1').innerText;
let rating = document.querySelector('span[itemprop="ratingValue"]').innerText;
let ratingCount = document.querySelector('span[itemprop="ratingCount"]').innerText;
return {
title,
rating,
ratingCount
}
});
console.log(data);
await browser.close();
})();
[
{"url": "https://www.imdb.com/title/tt5491994/"},
{"url": "https://www.imdb.com/title/tt0795176/"},
{"url": "https://www.imdb.com/title/tt0185906/"},
{"url":"https://www.imdb.com/title/tt0903747/"},
{"url": "https://www.imdb.com/title/tt7366338/"},
{"url": "https://www.imdb.com/title/tt0306414/"},
{"url": "https://www.imdb.com/title/tt6769208/"}
]
然后,我在同一个目录中手动(我还不知道如何创建json文件)创建了一个data.json文件,其中包含以下信息
const puppeteer = require('puppeteer');
//const jsonFile = require("./data.json") >> not sure if this is correct
//const numberOfUrls = jsonFile.url.length; >> not sure if this is correct
//const urlsArray = jsonFile.url; >> not sure if this is correct
(async () => {
let movieUrl = 'https://www.imdb.com/title/tt0944947/';
const browser = await puppeteer.launch({ headless: false});
const page = await browser.newPage();
await page.goto((movieUrl), { waitUntil: 'networkidle0' });
let data = await page.evaluate(() => {
let title = document.querySelector('div[class="title_wrapper"] > h1').innerText;
let rating = document.querySelector('span[itemprop="ratingValue"]').innerText;
let ratingCount = document.querySelector('span[itemprop="ratingCount"]').innerText;
return {
title,
rating,
ratingCount
}
});
console.log(data);
await browser.close();
})();
[
{"url": "https://www.imdb.com/title/tt5491994/"},
{"url": "https://www.imdb.com/title/tt0795176/"},
{"url": "https://www.imdb.com/title/tt0185906/"},
{"url":"https://www.imdb.com/title/tt0903747/"},
{"url": "https://www.imdb.com/title/tt7366338/"},
{"url": "https://www.imdb.com/title/tt0306414/"},
{"url": "https://www.imdb.com/title/tt6769208/"}
]
我有4个问题:
for(设i=0;i
这是我关于堆栈溢出的第一篇文章。我决定学习编程以拓宽就业前景。我很乐意收到任何关于改进我的答案搜索过程的反馈(例如,发布了太多的代码,没有足够的上下文,等等)
提前感谢您的帮助。以后,请尝试对每个问题使用一个问题:)
require
一起使用或多或少是一种攻击。更适合将模块与一起使用。因此,您将独立于CommonJS模块系统,并且能够使用相同的API保存JSON
[
"https://www.imdb.com/title/tt5491994/",
"https://www.imdb.com/title/tt0795176/",
"https://www.imdb.com/title/tt0185906/",
"https://www.imdb.com/title/tt0903747/",
"https://www.imdb.com/title/tt7366338/",
"https://www.imdb.com/title/tt0306414/",
"https://www.imdb.com/title/tt6769208/"
]
const puppeter=require('puppeter');
常数fs=要求('fs');
const json=fs.readFileSync('./test.json','utf8');
const urlsArray=JSON.parse(JSON);
const numberOfUrls=urlsArray.length;
(异步()=>{
试一试{
const browser=wait puppeter.launch({headless:false});
const page=wait browser.newPage();
常量结果=[];
for(设i=0;i{
让title=document.querySelector('div[class=“title\u wrapper”]>h1')。innerText;
让rating=document.querySelector('span[itemprop=“ratingValue”]”)。innerText;
让ratingCount=document.querySelector('span[itemprop=“ratingCount”]”)。innerText;
返回{
标题
评级
比率计数
};
});
控制台日志(数据);
结果:推送(数据);
}
控制台日志(结果);
writeFileSync('./result.json',json.stringify(result,null,2),'utf8');
等待浏览器关闭();
}捕捉(错误){
控制台错误(err);
}
})();
请修改您的帖子和标题,提出一个简单、明确、具体的问题。不要让每个人都进来看看你在讲什么。:)看见你不需要在一篇帖子里问很多问题。