[英]Parse javascript value from HTML response in C#
我实际上是在构建一个应用程序,在其中使用.NET 4.5中的HttpClient,将GET请求发送到网页(不是我的),并且在Content中收到以下响应:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:widget="http://www.netvibes.com/ns/">
<head>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
<script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script><title>Site</title>
<script type="text/javascript">
var HOST_DOMAIN = 'http://www.site.com/';
var ID = '2261443944';
var BASE_URL = 'https://base.site.com';
</script>
</head>
<body >
</body>
</html>
我想做的是使用.NET 4.5库以某种方式从头部分的js脚本解析HOST_DOMAIN,ID和BASE_URL的值,但我找不到方法。 有任何想法吗?
使用可捕获组中URL的正则表达式。
string pattern = @"var HOST_DOMAIN = '([^']+)';";
Match match = Regex.Matches(html, pattern)).FirstOrDefault();
if (match != null)
return match.Groups[1].Value;
说明:括号在正则表达式中定义了一个组,该组存储在匹配的“ Groups
属性中。
可能的问题:如果网址中包含转义的撇号,则无法正常工作。
对于用于主机名的正则表达式
var ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
参考链接: 堆栈溢出主机名正则表达式
然后为一个数字使用Reg Ex Number
以及如何在javascript中使用reg ex 如何在js中使用regex
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.