用隐藏的元素抓取动态网站

时间:2019-12-22 21:32:44

标签: javascript web-scraping phantomjs

目的是抓取booking.com以显示所有价格。为此,我使用的是运行下面的javascript代码的PhantomJS,然后将网页内容写到本地html文件中。

var url = 'https://www.booking.com/searchresults.html?ss=Copenhagen%20Denmark&checkin_year=2020&checkin_month=2&checkin_monthday=6&checkout_year=2020&checkout_month=2&checkout_monthday=9&group_adults=2&group_children=0&no_rooms=1&no_dorms=1&nflt=pri%3D1%3Bpri%3D2%3B';
var page = require('webpage').create();
var fs = require('fs');

page.onLoadFinished = function() {
    fs.write('result.html', page.content, 'w');
    phantom.exit();
};

page.open(url, function() {
    page.evaluate(function() {
    });
});

问题是价格没有被读取,结果看起来像这样(所有过滤器都丢失了,控制台中记录了一些警告和错误)

result

例如,以下是一些应删除的元素:

<div class="bui-price-display__value prco-inline-block-maker-helper" aria-hidden="true">
    €&nbsp;246
</div>
<span class="bui-u-sr-only">
    Preis
    €&nbsp;246
</span>

如果PhantomJS无法做到这一点,还有其他选择吗?我也尝试了cURL,但无济于事。

0 个答案:

没有答案