簡體   English   中英

如何從網頁中提取網址?

[英]How to extract a url from a webpage?

Twitter返回一個網頁,其中包含以下幾行:

<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 : https://ma-0.twimg.com/twitter-assets/responsive-web/web/ltr/main.da8c0a0fbf03fdac.js

使用正則表達式絕對是個好主意。 前綴部分的第一個正則表達式,應替換為空字符串,結束時使用相同的東西。
您需要使用\\ <轉義<這樣的字符,並使用常規的regex語法來精確定義所需的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM