如何从html中提取javascript

How do I extract javascript from within html

本文关键字:提取 javascript html      更新时间:2024-06-06

我正在创建一个用javascript编写的web抓取程序,使用request和cheerio。我试图提取的网页在html中包含javascript。这是我感兴趣的javascript,但找不到访问它的方法。有没有一种方法可以提取javascript,使用cheerio?

非常感谢您的任何建议,我刚刚开始网络抓取。

我的代码是:

var request = require('request');
var cheerio = require('cheerio');
var credentials = {
    username: 'username',
    password: 'password'
};
request.post({
    uri: 'http://webpage',
    headers: { 'content-type': 'application/x-www-form-urlencoded' },
    body: require('querystring').stringify(credentials)
}, function(err, res, body){
if(err) {
    callback.call(null, new Error('Login failed'));
    return;
}
request('http://webpage', function(err, res, body)
{
    if(err) {
        callback.call(null, new
            Error('Request failed'));
        return;
    }
    var $ = cheerio.load(body);
    var text = $('#element').text();
    console.log($.html());
}); 
});

如果你在网页中寻找javascript,你可以使用cheerio从html中收集所有<script>标签,然后从中获取内容。

var scripts = [];
request('http://webpage', function(err, res, body)
{
  if(err) {
    callback.call(null, new Error('Request failed'));
    return;
  }
  var $ = cheerio.load(body);
  $('script').each(function(i, element) {
    scripts[i] = $(element).text();
  }   
});

现在,您将在HTML中拥有一个包含所有可用javascript的数组。现在,如果它们是导入的javascript,那么您将不会得到任何内容。您可以搜索元素是否具有src url。

...
$('script').each(function(i, element) {
  if ($(element).attr('src') === undefined) {
    scripts[i] = $(element).text();
  }
  else {
    // Collect or ignore this.
  }
}
...

我还没有测试过这个,但它应该基于cheerio的文档工作。

https://github.com/cheeriojs/cheerio