【发布时间】:2021-06-25 13:32:43
【问题描述】:
我一直在尝试在 html 文档中查找 url,这必须在正则表达式中完成,因为 url 不在任何 html 标记中,所以我不能为此使用 nokogiri。为了获得 html,我使用了 httparty,我就是这样做的
require 'httparty'
doc = HTTParty.get("http://127.0.0.1:4040")
puts doc
输出html代码。为了获得网址,我使用了.split() 方法来访问网址。完整代码是
require 'httparty'
doc = HTTParty.get('http://127.0.0.1:4040').split(".ngrok.io")[0].split('https:')[2]
puts "https:#{doc}.ngrok.io"
我想使用正则表达式来执行此操作,因为 ngrok 可能会更新其 localhost html 文件,因此此代码将不再起作用。我该怎么做?
【问题讨论】:
-
"该 url 不在任何 html 标签中" -- 废话,当然是在 HTML 标签中,否则你获取的不是有效的 HTML! !!也许您的意思是它位于
<body>中间的某个位置,而不是像<div class="some-identifier">这样的特定明确位置,这很公平,但您的问题描述具有误导性。 -
现在,我们显然 绝对不知道
http://127.0.0.1:4040在小时机器上呈现的内容。因此,我们不可能知道您的解决方案是否有效,或者是否有信心提供推荐的替代方案/改进方案。您需要提供更多信息。 -
听起来您实际上想要做的是
grep类似%r{https://\w+\.ngrok\.io}的HTTP 正文?因为您当前的代码存在缺陷,.split('https:')[2]非常天真地假设在ngrok.ioURL 之前的页面上某处恰好提到了 2 个 URL? -
实际上。 localhost:4040 是一个 ngrok 本地服务器配置。我只是说这是一个 ngrok localhost 网页。但我喜欢你的回答
-
“ngrok localhost 网页”不是一个非常精确的描述。它取决于版本或配置吗?有没有一种方法可以完全重现您的问题,而 无需自己下载/安装 ngrok?我强烈建议在您的问题中分享实际的 HTML。这样,任何阅读本文的人都可以轻松、明确地运行您的代码以获得相同的结果。