gpt4 book ai didi

javascript - 使用 phantomjs 抓取 js 渲染的内容

转载 作者:行者123 更新时间:2023-12-02 23:57:21 25 4
gpt4 key购买 nike

我正在尝试从网页下载一些文件,其中包含 R 中的 javascript 渲染内容,这让我感到困惑。

文件位于表中。我的想法是读取和检索页面、抓取表格、识别 URL 并下载文件。这是第一步:读取并检索页面。

经过一番搜索,我找到了一个使用 phantomjs 的解决方案,这对我来说似乎非常好。我不精通 JS,所以我可以理解代码,但我对如何在我的场景中实现这一点没有什么想法。

我当前的脚本是:

// scrape_super_data_science_ml_data.js

var webPage = require('webpage');
var page = webPage.create();

var fs = require('fs');
var path = 'super_data_science_ml_data.html'

page.open('https://www.superdatascience.com/pages/machine-learning', function (status) {
var content = page.content;
fs.write(path,content,'w')
phantom.exit();
});

调用后,页面被下载,但没有JS渲染的内容。我不知道在完成页面检索之前渲染内容是否是时间问题,或者其他什么。

这是我在 R 中的流程示例:

# Scrape page
system("phantomjs scrape_super_data_science_ml_data.js")

# Check results
library(rvest)
library(dplyr)
page <- read_html("super_data_science_ml_data.hmtl")
page %>% html_text()

有人可以帮助我吗?任何提示将不胜感激!

最佳答案

我不确定这是否是您使用的确切代码,但您发布的代码中有一些错误。对于我使用的 phantomjs 代码

var system = require('system');
var page = require('webpage').create();


page.open('https://www.superdatascience.com/pages/machine-learning', function()
{
console.log(page.content);
phantom.exit();
});

然后我用 R 调用代码

# Scrape page
system("phantomjs scrape_super_data_science_ml_data.js > super_data_science_ml_data.html")

# Check results
library(rvest)
library(dplyr)
page <- read_html("super_data_science_ml_data.html")
page %>% html_text()

第一个错误是您忘记让 R 使用 system() 保存 html,第二个错误是拼写错误“super_data_science_ml_data.hmtl”

关于您有关渲染的问题,phantomjs 与 rvest 的主要目的之一是它渲染 js,因为它是 headless 浏览器,而不是像 rvest 这样的简单刮刀。

关于javascript - 使用 phantomjs 抓取 js 渲染的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55314941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com