gpt4 book ai didi

ruby - 在 Ruby 上评估 javascript

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:56 24 4
gpt4 key购买 nike

我尝试获取网页的 html 代码,但网络包含一些生成我需要的数据的 javascript 代码。

http = Net::HTTP.new('localhost')
path = '/files.php'

# POST request -> logging in
data = ''
headers = {
'Referer' => 'http://localhost:8080/files.php',
'User-Agent' => 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' => 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Encoding' => 'gzip, deflate',
'Connection' => 'keep-alive',
'Cookie' => ''
}

resp, data = http.post(path, data, headers)

puts resp.body

但这只返回 html 而不评估 javascript。我想在评估页面的 javascript 后获得最终的 html。

最佳答案

启用 JavaScript 进行抓取很困难。基本上,如果您想可靠地执行浏览器,则需要能够完全模拟浏览器。

幸运的是,有一些 gems 可以做到这一点。你可以使用 Capybara使用支持 JavaScript 的驱动程序,如 Selenium。例如(改编自 this blog post ):

require "capybara"
require "capybara/dsl"

Capybara.run_server = false
Capybara.current_driver = :selenium
Capybara.app_host = "http://www.google.com/"

class Scraper
include Capybara::DSL

def scrape
visit('/')
fill_in "q", :with => "Capybara"
click_button "Google Search"
all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
end
end

如果 Selenium 不是您的菜,那么还有替代的 JavaScript 驱动程序(它确实使您的浏览器自动化,例如 Firefox,而不是实现一个单独的、“ headless ”的浏览器)。参见,例如,capybara-webkitpoltergeist ,用于 headless 浏览器驱动程序。

关于ruby - 在 Ruby 上评估 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186399/

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