相关疑难解决方法(0)

使用Python抓取Web页面

我正在尝试开发一个简单的网络刮刀.我想在没有HTML代码的情况下提取文本.事实上,我实现了这个目标,但我已经看到在加载JavaScript的某些页面中我没有获得好的结果.

例如,如果某些JavaScript代码添加了一些文本,我看不到它,因为当我打电话时

response = urllib2.urlopen(request)
Run Code Online (Sandbox Code Playgroud)

我没有添加原始文本(因为JavaScript在客户端中执行).

所以,我正在寻找一些解决这个问题的想法.

python python-2.x web-scraping urlopen

154
推荐指数
12
解决办法
20万
查看次数

使用Node.js实时抓取网页

使用Node.js刮取网站内容有什么好处.我想构建非常非常快的东西,可以执行kayak.com风格的搜索,其中一个查询被分派到几个不同的站点,结果被删除,并在它们可用时返回给客户端.

我们假设这个脚本应该只提供JSON格式的结果,我们可以直接在浏览器或其他Web应用程序中处理它们.

一些起点:

使用node.js和jquery来抓取网站

有人有什么想法吗?

javascript jquery screen-scraping node.js web-scraping

65
推荐指数
2
解决办法
4万
查看次数

用cheerio执行抓取的JavaScript

我有一个网页,其中有一些JS API不会改变dom,但返回一些数字.我想编写一个NodeJS应用程序来下载这些页面并在下载页面的上下文中执行这些功能.

我正在寻找cheerio页面抓取...但是虽然我看到用它来导航和操作DOM是多么容易,但我没有看到任何运行页面功能的访问权限.有可能吗?

相反,我应该在jsdom看?

谢谢

javascript node.js web-scraping cheerio

5
推荐指数
2
解决办法
4543
查看次数

使用PhantomJS从网站上读取javascript变量

我是Javascript和PhantomJS的新手,但我看起来很简单的目标已经证明比预期更难实现.我想编写一个加载网站的脚本,然后输出该页面上使用的Javascript变量的值.如果我在浏览器中打开该页面并打开Javascript控制台,我可以输入变量名称,它会告诉我与所述变量相关的值.我只是尝试使用PhantomJS重现此功能,以便我可以自动执行此任务.

有人能指出我正确的文件吗?假设PhantomJS是正确的方法,我无法找到如何做这样的事情.也许有一个更简单的选择?

谢谢.

javascript variables phantomjs

5
推荐指数
2
解决办法
5817
查看次数

从实时比分网站抓取网页

我正在尝试从实时比分网站获取数据。我使用node.js 与express.js、request.js 和cheerio.js 来从网页获取HTML。它适用于 HTML 的某些部分,但不适用于实时部分。

我正在尝试从网站http://www.flashresultats.com抓取数据。当我使用 Chrome 开发人员工具时,我可以看到 HTML 内容,但当我使用 JavaScript 代码时,结果为空。

这是我试图提取的内容的 Chrome 捕获:

HTML 抓取

这是我正在使用的代码:

var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();

url = 'http://www.flashresultats.fr'

request(url, function(error, response, html){
    if(!error){
        var $ = cheerio.load(html);
        var myvar = $('#g_1_UJzOgxfc').html();
        console.log(myvar);
    }
    else {
        console.log('Error');
    }
})
Run Code Online (Sandbox Code Playgroud)

html javascript node.js web-scraping cheerio

3
推荐指数
1
解决办法
4074
查看次数

您如何在NodeJ中抓取动态生成的网页?

有些网站的页面加载时会动态生成DOM和内容。(基于Angularjs的网站为此而臭名昭著)

您使用什么方法?我同时尝试了phantomjs和jsdom,但似乎无法在抓取之前让页面执行其javascript。

这是一个简单的jsdom示例(不是基于angularjs的,但仍是动态生成的)

var env = require('jsdom').env;

exports.scrape = function(link, callback) {
  var config = {
    url: link,
    headers: { 
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36'
      },
    done: jsdomDone
  };

  env(config);
}

function jsdomDone(err, window) {
  var info = null;
  if(err) {
    console.error(err);
  } else {
    var $ = require('jquery')(window);

    console.log($('.profilePic').attr('src'));
  }
}

exports.scrape('https://www.facebook.com/elcompanies');
Run Code Online (Sandbox Code Playgroud)

我尝试phantomjs取得了一定的成功。

var page = new WebPage()
var fs = require('fs');

page.onLoadFinished = function() {
  console.log("page load finished");
  window.setTimeout(function() {
    page.render('export.png'); …
Run Code Online (Sandbox Code Playgroud)

web-scraping jsdom phantomjs

2
推荐指数
1
解决办法
7340
查看次数

使用 Node.js 抓取 JavaScript 生成的网站

当我解析静态 html 页面时,我的 node.js 应用程序运行良好。但是,当 URL 是 JavaScript 生成的页面时,该应用程序将无法运行。如何抓取 JavaScript 生成的网页?

我的应用程序.js

var express = require('express'),
  fs = require('fs'),
  request = require('request'),
  cheerio = require('cheerio'),
  app = express();

app.get('/scrape', function( req, res ) {

  url = 'http://www.apache.org/';

  request( url, function( error, response, html ) {
    if( !error ) {
      var $ = cheerio.load(html);

      var title, release, rating;
      var json = { title : "" };

      $('body').filter(function() {
        var data = $(this);
        title = data.find('.panel-title').text();
        json.title = title;
      })
    }

    fs.writeFile('output.json', …
Run Code Online (Sandbox Code Playgroud)

javascript node.js web-scraping express cheerio

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