Articles of web crawler

找不到模块“爬虫”

在通过npm命令在Node.js(不在默认目录中)中安装node-crawler之后,我尝试运行“ Usage ”部分中的代码,但执行var Crawler = require("crawler");时发生错误var Crawler = require("crawler"); 和VisualStudio代码debugging控制台说Cannot find module 'crawler' 。 这是否发生,因为我在自定义位置安装了crawler ? 我怎样才能解决这个问题?

Node.io,JSDOM或PhantomJs? 或者,YQL-data.html.cssselect?

我需要抓取一个特定的网站挖掘出一些相关的信息。 看起来像首先我必须search该网站,以获得相应的url,抓取时会给我的详细信息。 我们假设,searchurl是 example.com/city1/search.html?cat=category1&locality=location1&page=1 这意味着,可以有city2,city3等类别可以是category2,category3等等,用于位置和页面。 我收集了所有的城市,类别,地点和页面可以增加,直到结果不为空。 得到所有的url后,我必须从每个url挖掘出详细的信息。 我已经看到,某些必要的信息可作为JavaScript的一部分。 现在,我已经看到了node.io,jsdom和phantomjs。 我也看到了yql。 由于我是新手,请根据您的经验向我build议,在这种情况下哪一个是最理想的。 如果你可以举一些例子,那就太棒了。

在node.js vs C#中的networking爬虫性能

我正在编写一个应用程序,爬过一长串链接, 下载页面 ,使用xpath查询searchhtml元素,并将检索到的一些信息存储在mysql数据库中 。 我使用multithreading解决scheme来获取大部分服务器,并消除延迟的影响。 我使用csharp和java编写了大部分应用程序,并使用asp.net/c#编写了我的Web应用程序。 我想问的是Node.js是否值得从性能angular度考虑? 因为吞吐量是最重要的因素。 Node.js更便携,跨平台是另一个原因,但性能对我来说更重要。

如何关注PhantomJS中的document.location.reload?

我在PhantomJS中加载了一个页面(在NodeJS中使用它),在页面上有一个JS函数doRedirect() ,它包含 … document.cookie = "key=" + assignedKey document.location.reload(true) 我像这样从PhantomJS运行doRedirect() page.evaluate(function() { return doRedirect() }).then(function(result) { // result is null here }) 我希望PhantomJS遵循document.location.reload(true)并返回新页面的内容。 如何才能做到这一点?

在localhost上为meteor.js设置prerender.io

1)我已经安装并运行应用程序meteor.js https://github.com/meteor/simple-todos-react 2)我在应用程序目录附近安装了prerender服务器: git clone https://github.com/prerender/prerender.git cd prerender npm install 并设置端口: export PORT=3050 最终运行 node server.js 3)我已经安装了模块prerender-node : meteor npm install prerender-node –save 设置环境variables: export PRERENDER_SERVICE_URL="http://localhost:3050/" 4)我写在./server/main.js : import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; import prerenderIO from 'prerender-node'; Meteor.startup(() => { prerenderIO.set('host', 'localhost'); prerenderIO.set('protocol', 'http'); prerenderIO.set('port', '3000'); WebApp.connectHandlers.use(prerenderIO); }); […]

PhantomJS没有正确地提供JS和CSS文件

我有一个节点服务器运行并监听端口8080.有一个mod_rewrite规则处于活动状态,将Botsredirect到此端口。 RewriteCond %{HTTP_USER_AGENT} (googlebot|adsbot-google|bingbot|msnbot|psbot|gigabot|twitterbot|linkedinbot|yahoo-mmcrawler|pingdom\.com_bot) [NC] RewriteRule ^ http://127.0.0.1:8080%{REQUEST_URI} [P] 节点脚本依赖phantomjs脚本来打开漫游器请求的任何URL并返回内容。 代码取自http://backbonetutorials.com/seo-for-single-page-apps/ 我通过在本地机器上运行phantomjs并使用相同的phantomjs代码直接请求我的网页来testing这一点。 结果与“crawl as google”表示的一样(google网站pipe理员工具),也就是说CSS和JS文件没有被phantomjs正确提供。 CSS文件只包含 <html><head></head><body></body></html> 没有实际的CSS内容。 JS文件有 <html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"> 插入任何JS代码之前的最开始。 因此,当谷歌试图抓取和呈现页面布局被打破,JS错误抛出。 任何提示? 谢谢。

纯粹的JavaScript解决scheme的谷歌Ajax可伸缩规范

我有一个基于JavaScript的项目(例如node.js,backbone.js等)。 我正在使用像/#!/ about这样的hashbangurl,并且已经阅读了google的ajax可search规范。 我已经做了一些与僵尸无头UItesting,可以很容易想到如何通过设置一个轻微的延迟和静态内容返回到谷歌机器人。 但是我并不想从头开始实现,希望有一个预先存在的库适合我的堆栈。 知道吗? 编辑:在写作时,我不认为这存在。 然而,在服务器和客户端上使用主干(或类似的)进行渲染是合理的方法(即使不是直接的答案)。 所以我打算把这个标记为答案,尽pipe未来可能会有更好的解决scheme。

如何获得casper.js http.status代码?

我有以下简单的代码: var casper = require("casper").create({ }), utils = require('utils'), http = require('http'), fs = require('fs'); casper.start(); casper.thenOpen('http://www.yahoo.com/', function() { casper.capture('test.png'); }); casper.on('http.status.404', function(resource) { this.echo('wait, this url is 404: ' + resource.url); }); casper.run(function() { casper.exit(); }); 有没有办法赶上http.status代码,不pipe它是什么? 现在我可以在文档中看到如何捕捉特定的代码事件。 如果我只想看看它是什么呢?