- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 webscraping 函数来使用数据生成 json,webscraper 部分可以工作,奇怪的是该函数返回未定义
获取产品.js
module.exports.getproduct = url => {
fetch(url)
.then(response => response.text())
.then(body => {
let product;
const $ = cheerio.load(body);
product = {
productName: $(".product-name").text()
};
console.log(product);
return product;
});
};
index.js
const {getproduct} = require('./webScraper/getproduct');
console.log(getproduct('https://www.americanas.com.br/produto/134118928'));
console.log(产品);工作正常,但 index.js 上的 console.log 不打印任何内容。我缺少什么?
最佳答案
每个return
javascript 中的语句只属于它最接近的周围函数。您的代码中有一个 return 语句,它属于与您预期不同的函数:
.then(body => {
...
return product;
})
所以return
语句只会向该函数返回一个值。你的主要功能,getproducts
,实际上没有 return 语句,因此它确实返回 undefined。在 fetch
前面添加一个回车解决了这个问题,但我们还没有完成:
return fetch(url)
因为fetch
和 .then
后面的 -s 不仅仅返回值。返回Promise
。 promise 是很难的概念,我无法在这里解释,所以如果你还不确定的话,我建议你阅读更多相关内容:)
主要的收获是从 promise 中获取值(value),您必须使用 .then
或await
,更多关于await
稍后,让我们继续 .then
第一:
getproduct('https://www.americanas.com.br/produto/134118928')
.then(product => {
console.log('product:', product);
});
现在,人们意识到,编写所有用 .then(...).then(...)
链中的 Promise 执行某些操作的代码-s 会有点令人沮丧,所以我们(javascript 社区)发明了 async/await
。这样你就可以像这样编写代码:
module.exports.getproduct = async (url) => {
let response = await fetch(url);
let body = await response.text();
let $ = cheerio.load(body);
let product = {
productName: $(".product-name").text()
};
console.log(product);
return product;
};
现在看起来好多了,您可以看到 return
语句实际上又在正确的函数中了!但请注意,您仍然不必忘记输入 await
在通常需要 .then
的函数之前最后,但这肯定更容易。
现在你index.js
有点棘手,因为你只能使用 await
在标有 async
的函数中,但我们可以:
const {getproduct} = require('./webScraper/getproduct');
let main = async () => {
let product = await getproduct('https://www.americanas.com.br/produto/134118928');
console.log('product:', product);
}
main();
我希望您能更清楚地了解如何从这里继续前进:)
关于javascript - Webscraper 函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138175/
我正在尝试使用 R 抓取 OECD 表格。 library(XML) OECD <- readHTMLTable('http://stats.oecd.org/Index.aspx?DataSetCo
我正在使用anaconda并试图创建一个可以在Linkedin上继续使用并从页面中刮取相关信息的刮刀。目前,我只是想让它登录并从相关页面中提取源代码。但是,下面的代码不断返回“TypeError:'N
我正在创建一个 webscraping 函数来使用数据生成 json,webscraper 部分可以工作,奇怪的是该函数返回未定义 获取产品.js module.exports.getproduct
task :fetch_front => :environment do require 'rubygems' require 'nokogiri' require 'open-uri' requi
我为 realtor.com 构建了一个 webscraper,因为我正在寻找我所在地区的房屋和代理商,这对我来说很容易,但是他们只是更改了他们网站上的代码(可能是为了阻止人们这样做),现在我是得到一
我是 Python 新手,但对 R 很了解。我正在尝试从雅虎网络抓取股票价格数据。我成功检索了价格数据并能够创建数据框。然而,雅虎包括了何时支付股息。目前,我想忽略股息,但我在过滤数据框以在支付股息时
我希望能够将来自多个 New Egg 网页的数据抓取到一个 csv 文件中。 我目前能够将单个 New Egg 网页中的数据网络抓取到一个 csv 文件中,但是我希望同时对多个页面进行网络抓取。 fr
我正在使用 DryScrape 抓取一个 javascript 页面,如果出现错误,它偶尔会终止进程。我已经尝试根据文档使用 catch 来防止它,但我还没有弄明白: try:
背景 大家好...python 和网络抓取的新手。我在 Mac (Sierra) 上,在 Firefox (87.0) 中运行 Jupyter Notebook。我正在尝试从这样的网页中抓取多个值:h
我无法解决 R 中的这个问题,如果您能在这里给我一些建议,我将不胜感激。 我正在尝试从 https://www.investing.com/rates-bonds/spain-5-year-bond-
对于一个简单的网络抓取工具,我遇到了以下代码的 unicode 编码错误。 print 'JSON scraper initializing' from bs4 import BeautifulSou
我正在尝试从 this website 抓取实时出发表使用 BeautifulSoup 。 我尝试过以下方法: caremar_live_departures_table = list(soup.se
目前的代码下载并打印到屏幕上,但我如何将打印的 Material 放入 sql 数据库中。如果我想将数据放入 CSV 文件中,Python(在美好的一天)似乎会创建该文件automatically.O
当我尝试通过 python 使用 Selenium 库对网站进行网络抓取时遇到问题。关键是我想获得一些有关收集到该站点的歌曲的信息:https://bandcamp.com/?g=all&s=top&
您好,我正在使用 Beautifulsoup 解析网站并获取名称作为输出。但是在运行脚本之后,我得到了一个 [u'word1', u'word2', u'word3'] 输出。我正在寻找的是 'wor
我是网络抓取工具的新手。我做了一些有用的东西,但要花好几个小时才能得到我需要的一切。我阅读了一些关于使用并行进程来处理 URL 的内容,但我不知道如何去做并将其合并到我已有的内容中。非常感谢您的帮助!
我正在尝试制作一个简单的nodeJS webscraper,但我不知道如何在 Json 文件中格式化我的结果。 我正在使用express、request、cheerio和fs。 这是我的代码: var
Scraper 的目标是分析哪些棋盘游戏获得最多点赞并将其打印在排序列表中。基本上是一本“名字:竖起大拇指”的字典。以下是我要排序的游戏列表: https://boardgamegeek.com/ge
我正在尝试从网站上抓取广告的 URL 链接。我在 jupyter 笔记本中有以下代码 from bs4 import BeautifulSoup import requests link = "htt
我正在尝试抓取一个房地产网站的列表。它有一个 aspx 表单,必须在提交前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for-Sa
我是一名优秀的程序员,十分优秀!