Articles of 屏幕抓取

刮cheerio.js,得到:错误:只能在暂停时执行操作

试图从这个网站刮取威士忌的名字,image_url和描述: https ://www.thewhiskyexchange.com/c/33/american-whiskey ? filter = true#productlist-filter using cheerio.js。 我想把这些信息转换成一个JSON对象数组来存储在我的MongoDB中。 无法显示整个网站的html,但这里是无序列表的相关基本结构的一部分: <body> <div class="siteWrapper"> <div class="wrapper"> <div class="products-wrapper"> <ul class="products-list"> <li> <a> <div class="product-content"> <div class="information"> <p class="name"> " Jack Daniel's Old No. 7" <span>Small Bottle</span> </p> </div> </div> </a> </li> <li></li> <li></li> etc. </all closing tags> 刚开始试图在<p class="name">得到威士忌的名字,没有任何来自<span>标签的文本,我在浏览器控制台中使用了这个jQuery代码,它正是我所需要的: $('ul.products-list > li').each(function(index) { const nameOnly […]

如何使用node.js和javascript来模仿Facebook的“链接共享”function

所以我想模仿的是Facebook提供的链接共享function。 您只需inputURL,然后FB自动从目标网站获取图像,标题和简短描述。 如何用javascript和node.js和其他可能需要的JavaScript库编程呢? 我find了一个使用PHP的fopen函数的例子,但是我不想在这个项目中包含PHP。 我正在问一个webscraping的例子吗? 我需要做的就是从目标网站的meta标签中获取数据,然后使用CSSselect器获取图片标签? 如果有人能指出我正确的方向,那将不胜感激。 谢谢!

用phantomJS和NodeJS刮擦

我正在按照这里列出的教程: http://code.tutsplus.com/tutorials/screen-scraping-with-nodejs–net-25560 当我运行代码时: var host = 'http://www.shoutcast.com/?action=sub&cat=Hindi#134'; var phantom = require('phantom'); phantom.create(function(ph) { return ph.createPage(function(page) { return page.open(host, function(status) { console.log("opened site? ", status); page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js', function() { //jQuery Loaded. //Wait for a bit for AJAX content to load on the page. Here, we are waiting 5 seconds. setTimeout(function() { return page.evaluate(function() { //Get what you […]

Node.js:Proxy网站如何处理相关的Url?

我在Node中创build了一个相对简单的代理,它允许我下载页面并显示它们。 这很好,虽然一些脚本 , 链接 , 表单和图像似乎被打破,因为它们指向相关的文件。 作为一个项目,我试图创build一个function齐全的Web代理。 像Proxify这样的网站如何解决这个问题? scheme供参考: var app = require('express').createServer(); var request = require('request'), sys = require('sys'), fs=require('fs'); app.get('/url', function(req, res){ console.log(req.query.link); request({ uri: req.query.link, headers: {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0"} }, function (error, response, body) { if (error && response.statusCode !== 200) { console.log('Error when contacting google.com') } […]

Node.js Scraping:没有收到302redirect位置的查询string

我已经尝试了Node.js的HTTPS类和Mikeal的“请求”库 。 无论哪种方式,当抓取返回302响应的某个网站时,我无法检索查询string参数。 详情见下文: curl的location属性返回如下所示: https://www.anotsoawesomeurl.com?FOO=&BAR=LOGIN-0004&ETC=60013E52F8A437 但同样的事情在NodeJs的HTTPS类返回: https://www.anotsoawesomeurl.com 任何想法可能是这个问题的解决办法?

似乎无法刮在Node.js的div类标签

我是node.js的新手 我的经验已经在Java和VBA。 我试图为一个朋友刮一个网站,一切都进展顺利,直到我不能得到我所追求的。 <div class="gwt-Label ADC2X2-cq ADC2X2-b-nb ADC2X2-b-Zb">Phone: +4576 102900</div> 该标签只是一个文本。 没有attr或任何东西。 然而,我不能用cheerio来刮擦它。 if(!err && resp.statusCode == 200){ var $ = cheerio.load(body); var number = $('//tried everything here!').text(); console.log(number); 这个function我也玩过了 $('.ADC2X2').filter(function(i){ console.log("Sdfs"); console.log (i); 任何build议将不胜感激。 感谢所有!

这是慢的,还是PhantomJS? 替代刮刀?

我刚刚写了我的第一个脚本,但我发现它运行非常缓慢。 我对pjscrape和phantomjs都是新手,所以我不知道哪个是罪魁祸首。 我正在从本地主机加载文件,所以瓶颈绝对不在传输中。 我的config.js脚本如下所示: pjs.addSuite({ url: 'http://localhost/file.html'. scraper: function() { var people = $('table.person'); var results = []; $.each(people, function() { var $this = $(this); results.push({ firstName: $this.find('.firstName').text(), lastName: $this.find('.lastName').text(), age: $this.find('.age').text() }); } return results; } } 然后我使用这里的命令行指令来执行PhantomJS。 ~> phantomjs pjscrape.js config.js 我在Chrome中运行相同的代码(只是刮板函数()),它是即时的。 在phantomjs / pjscrape中,需要30秒。 任何线索是什么造成缓慢? 有没有更好的方式来做这个DOM屏幕抓取? 也许一个nodejs解决scheme?

奇怪的node.js错误:TypeError:Object#<Object> has no method'on'

我试图在node.js中运行一个简单的屏幕抓取应用程序。 代码发布在这里: https : //github.com/anismiles/jsdom-based-screen-scraper http://anismiles.wordpress.com/2010/11/29/node-js-and-jquery-to-scrape -websites / 服务器启动正常,但是当我运行一个查询时,我得到以下错误。 有谁知道这是为什么? TypeError: Object #<Object> has no method 'on' at Object.<anonymous> (/Users/avishai/Downloads/anismiles-jsdom-based-screen-scraper-f0c79d3/searcher-server.js:9:10) at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21) at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:157:15) at pass (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10) at Object.router [as handle] (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:168:6) at next (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:218:15) at Server.handle (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:231:3) at Server.emit (events.js:45:17) at HTTPParser.onIncoming (http.js:1078:12) at HTTPParser.onHeadersComplete (http.js:87:31) 似乎是抛出错误的function是: function books(app){ app.get('/:query', function(req, res, […]

当使用Node.js进行网页抓取时,我可以在网页上运行所有的JavaScript吗? (即模拟一个真正的浏览器?)

我正在尝试使用node.js进行一些networking抓取。 使用jsdom ,很容易加载DOM并注入JavaScript。 我想更进一步:运行从网页链接到的所有JavaScript,然后检查生成的DOM, 包括元素的视觉属性(高度,宽度等)。 到目前为止,当我试图用jsdom检查DOM元素的维度时,我得到了NaN 。 这可能吗? 这让我感到有两个截然不同的挑战: 在网页上运行所有的JS 除了DOM之外,还要让Node来模拟窗口/屏幕渲染 另一种方法来问这个问题:是否可以使用node.js作为一个完全无头的浏览器,你可以脚本? 如果这是不可能的,有没有人有什么图书馆我可以用来做这个build议? 我相对语言不可知论者。

如何将HTML页面转换为纯文本在node.js?

我知道这已经被问过,但我找不到node.js的好答案 我需要服务器端从提取的HTML页面中提取纯文本(无标签,脚本等)。 我知道如何用jQuery做客户端(获取body标签的.text()内容),但不知道如何在服务器端做到这一点。 我试过https://npmjs.org/package/html-to-text,但是这不处理脚本。 var htmlToText = require('html-to-text'); var request = require('request'); request.get(url, function (error, result) { var text = htmlToText.fromString(result.body, { wordwrap: 130 }); }); 我已经尝试phantom.js,但无法find一种方法来获取纯文本。