如何从网页中提取 url?
How to extract a url from a webpage?
Twitter returns 包含这些行的网页:
<link rel="dns-prefetch" href="//video.twimg.com" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/vendor.69f9ac19fa493004.js" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/i18n/en.312d3f56908013c9.js" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/main.da8c0a0fbf03fdac.js" />
<meta property="fb:app_id" content="2231777543" />
我需要包含 main.*.js
文件的 url。我怎么才能得到它?
我试过这个:
var mainIndex = content.IndexOf("main.");
var startIndex = content.LastIndexOf("href=\"", mainIndex) + 6;
var endIndex = content.IndexOf(".js", startIndex) + 3;
var url = content.Substring(startIndex, endIndex - startIndex);
但这是一个糟糕的不安全实现。谢谢
使用正则表达式绝对是个好主意。
第一个前缀部分的正则表达式应替换为空字符串,结尾部分相同。
您将需要使用 \< 转义 < 之类的字符,并使用正常的正则表达式语法来准确定义所需内容。
您可以使用专用的 HTML 解析器来完成,例如 Html Agility Pack
var text = "<link rel=\"dns-prefetch\" href=\"//vide.... />";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
var links = doc
.DocumentNode
.SelectNodes("//link")
.Select(e=>e.Attributes["href"].Value);
links
// here, you could parse and match the URL robustly
.Where(href=>href.Contains("main"))
// try it in LINQPad
.Dump();
结果:https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/main.da8c0a0fbf03fdac.js
Twitter returns 包含这些行的网页:
<link rel="dns-prefetch" href="//video.twimg.com" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/vendor.69f9ac19fa493004.js" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/i18n/en.312d3f56908013c9.js" />
<link rel="preload" as="script" crossorigin="anonymous" href="https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/main.da8c0a0fbf03fdac.js" />
<meta property="fb:app_id" content="2231777543" />
我需要包含 main.*.js
文件的 url。我怎么才能得到它?
我试过这个:
var mainIndex = content.IndexOf("main.");
var startIndex = content.LastIndexOf("href=\"", mainIndex) + 6;
var endIndex = content.IndexOf(".js", startIndex) + 3;
var url = content.Substring(startIndex, endIndex - startIndex);
但这是一个糟糕的不安全实现。谢谢
使用正则表达式绝对是个好主意。
第一个前缀部分的正则表达式应替换为空字符串,结尾部分相同。
您将需要使用 \< 转义 < 之类的字符,并使用正常的正则表达式语法来准确定义所需内容。
您可以使用专用的 HTML 解析器来完成,例如 Html Agility Pack
var text = "<link rel=\"dns-prefetch\" href=\"//vide.... />";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
var links = doc
.DocumentNode
.SelectNodes("//link")
.Select(e=>e.Attributes["href"].Value);
links
// here, you could parse and match the URL robustly
.Where(href=>href.Contains("main"))
// try it in LINQPad
.Dump();
结果:https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/main.da8c0a0fbf03fdac.js