-1 html javascript web-scraping meteor 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) Chrome/34.0.1847.132 Safari/537.36"
};
this.params = {};
if (cookie) {
this.headers.Cookie = cookie.get();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |