Javascript 如何在Phantomjs中使用jQuery选择html元素?

Javascript 如何在Phantomjs中使用jQuery选择html元素?,javascript,jquery,html,web-scraping,phantomjs,Javascript,Jquery,Html,Web Scraping,Phantomjs,我将从一个使用javascript加载动态内容的网站上抓取一些内容。以前,我使用了请求和干杯进行刮水,它们工作得很好。但我刚刚发现,请求和干杯无法抓取动态内容。经过研究,我发现phantomjs可以在页面加载后获取所有内容。我现在有一个问题,我不能像以前在cheerio中那样使用jQuery选择器。这是我的示例代码,但选择器为nothing var page = require('webpage').create(); var url = 'http://angkorauto.com/vehic

我将从一个使用javascript加载动态内容的网站上抓取一些内容。以前,我使用了请求干杯进行刮水,它们工作得很好。但我刚刚发现,请求干杯无法抓取动态内容。经过研究,我发现phantomjs可以在页面加载后获取所有内容。我现在有一个问题,我不能像以前在cheerio中那样使用jQuery选择器。这是我的示例代码,但选择器为nothing

var page = require('webpage').create();
var url = 'http://angkorauto.com/vehicle';
page.open(url, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit();
    } else {
        window.setTimeout(function () {
            // console.log(page.content);
            page.includeJs('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js', function(){

                page.evaluate(function(){
                    console.log($('.divTitle').find('a').attr('href'));
                });
            });

            phantom.exit();
        }, 1500);
    }
});
你能帮我解决这个问题吗?我现在真的被卡住了


感谢您抽出时间提供帮助。

您想要浏览的网站已经有了jQuery(与许多其他网站一样),因此您不必再次加载它

这很好:

var page = require('webpage').create();
var url = 'http://angkorauto.com/vehicle';
page.open(url, function(status) {

    var href = page.evaluate(function(){
        return jQuery('.divTitle').find('a').attr('href');
    });

    console.log(href);
});

你想要抓取的网站已经有jQuery了(和其他很多网站一样),所以你不必再次加载它

这很好:

var page = require('webpage').create();
var url = 'http://angkorauto.com/vehicle';
page.open(url, function(status) {

    var href = page.evaluate(function(){
        return jQuery('.divTitle').find('a').attr('href');
    });

    console.log(href);
});

你只想从这个网站(ankkorauto.com)或其他一些网站上搜刮吗?如果请求和欢呼不能使用,我也需要其他网站。什么???什么是cheerio?你只想从这个网站(ankkorauto.com)或其他一些网站刮取?如果请求和cheerio无法使用,我也想要其他网站。什么???这段代码解决了两个问题,但没有明确说明原因。1.加载另一个jQuery版本往往会破坏站点上的所有jQuery功能。因此,如果它已经可用,则不应加载它。2. <默认情况下,页面上下文(页面内
page.evaluate
)中的代码>控制台.log调用不会打印到控制台。他们需要
页面.onConsolleMessage
事件处理程序。(@DooDoo)我会试试这段代码解决了两个问题,但没有明确说明原因。1.加载另一个jQuery版本往往会破坏站点上的所有jQuery功能。因此,如果它已经可用,则不应加载它。2. <默认情况下,页面上下文(页面内
page.evaluate
)中的代码>控制台.log调用不会打印到控制台。他们需要
页面.onConsolleMessage
事件处理程序。(@DooDoo)