相关疑难解决方法(0)

如何使用Meteor解析HTML服务器端?

我希望能够从我使用Meteor.http方法获取的HTML页面中删除链接.在服务器端使用jQuery是理想的,但我认为这不起作用.

meteor

15
推荐指数
2
解决办法
4762
查看次数

我们在一个Meteor项目中将npm安装的节点模块放在哪里?

我跟着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或其他地方部署?

javascript meteor

10
推荐指数
1
解决办法
7411
查看次数

抓取页面 - 一个部分未使用cheerio加载

我正在用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)

html javascript web-scraping meteor cheerio

-1
推荐指数
1
解决办法
3684
查看次数

标签 统计

meteor ×3

javascript ×2

cheerio ×1

html ×1

web-scraping ×1