我希望能够从我使用Meteor.http方法获取的HTML页面中删除链接.在服务器端使用jQuery是理想的,但我认为这不起作用.
我跟着github meteorirc项目的主角并将它们放入/ public /
我从内部/ public /通过npm安装了我的节点模块,因此我有一个/ public/node_modules /目录.
我不认为这是他们的'正确'或'标准'的地方,因为根据Meteor文档......
Meteor收集所有JavaScript文件,不包括客户端和公共子目录下的任何内容,并将它们加载到光纤内的Node.js服务器实例中
要加载的代码位于服务器目录和服务器js文件中,看起来像这样.
var require = __meteor_bootstrap__.require;
var path = require("path");
var fs = require('fs');
var base = path.resolve('.');
if (base == '/'){
base = path.dirname(global.require.main.filename);
}
var Twit;
var twitPath = 'node_modules/twit';
var publicTwitPath = path.resolve(base+'/public/'+twitPath);
var staticTwitPath = path.resolve(base+'/static/'+twitPath);
if (path.existsSync(publicTwitPath)){
Twit = require(publicTwitPath);
}
else if (path.existsSync(staticTwitPath)){
Twit = require(staticTwitPath);
}
else{
console.log('WARNING Twit not loaded. Node_modules not found');
}
Run Code Online (Sandbox Code Playgroud)
根据文档,这不是标准的,我不相信我应该这样做.然而,它在我的开发平台和部署meteor.com的生产中都有效.
在项目的目录结构中应该安装节点模块,以便它们在本地工作,并在meteor.com或其他地方部署?
我正在用cheerio 和meteor 刮一个社交网络。我可以登录,搜索一些信息并在页面上抓取我想要的信息。我正在发出请求并将 html 传递给cheerio,就像用 Meteor.js抓取一样。
问题是,只有当我通过网络浏览器加载页面时,才会出现页面的一部分:
在浏览器中:
<div A>
<div B>
<ul (...)>
<li (...)>...</li>
...
<li (...)>...</li>
</ul>
</div> <-- end B -->
<script id="NAME_1" type="fs/embed+m"></script>
<script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)
在 console.log(cherio.load(html)) 中:
<div A>
<script id="NAME_1" type="fs/embed+m"></script>
<script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)
我假设 html 是由cheerio 加载的,而不执行脚本。我对吗?如果是这样,有什么方法可以让cheerio 执行脚本,这样我就可以在放置内容后抓取页面?
我正在使用以下选项发出 http 请求来模拟浏览器请求,所以我认为这不是请求本身的问题(无头浏览器不会让它变得更好)。
Options = function (cookie) {
this.headers = {
"Accept": "*/*",
"Connection": "keep-alive",
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) …Run Code Online (Sandbox Code Playgroud)