尝试使用webrequest从HTML源代码中获取一段文本

时间:2017-02-13 04:00:13

标签: c#

所以我正在进行网络请求并阅读源代码和所有内容。 在源代码中,我需要一个特定的字符串。 来源:

RESPONSIVE.constant.user = {
                id: 71723922,
                name: 'Raktott',
                member: false,
                language: 0,
                isLoggedIn: 1
            }; 

我需要的部分是姓名:'',所以只有''中的部分 我怎么做到这一点? 我已经尝试过正则表达式htmlagilitypack等。

2 个答案:

答案 0 :(得分:0)

考虑这个你的字符串

  id: 71723922,
  name: 'Raktott',
  member: false,
  language: 0,
  isLoggedIn: 1

我将根据,分隔符将字符串拆分为字符串数组。

string str = "id: 71723922,name: 'Raktott', member: false,language: 0,isLoggedIn: 1";

string[] arrstr = str.Split(',');

for (int i=0; i<=arrstr.Length; i++){

if(arrstr[i].Contains("name"))

{
 string name = arrstr[i];

 //Perform you Logic here

  break;
 }
 }

答案 1 :(得分:0)

您可以Regex使用lazy quantifier*?)来捕捉{花括号}之间的文字:

// Don't forget to escape full-stops!
Regex regex = new Regex( @"RESPONSIVE\.constant\.user = {(?<userParams>.*?)}", RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline);

Match match = regex.Match(pageSourceCode);

if (match.Success)
{
    // Split up the values using comma
    var keyValuePairs = match.Groups["userParams"].Value.Split(',');

    // Split up each line using : as delimeter and clean up both sides, removing whitespace and single quote characters
    var dict = keyValuePairs
        .Select(kvp => kvp.Split(':'))
        .ToDictionary(kvp => kvp[0].Trim(), kvp => kvp[1].Trim().Trim(new char[] { '\'' }));

    // Read name
    var name = dict["name"];

}