-1

HtmlAgility または Xpath を使用して、外部 HTML ページの ajax で読み込まれたコンテンツを取得する必要があります。ただし、一部のコンテンツは外部リソースから Ajax によって読み込まれます。

それらのコンテンツを取得する最良の方法は何ですか?

ありがとう

4

1 に答える 1

0

**これは、私がブログに投稿したサンプル スクリプトで、URL エンドポイントの JSON 応答タイプの一般的なアプローチと形式を備えています。** http://chadcollins.com/create-table-from-json-data/

    // set the content type so the browser(s) will buffer the output correctly.
    Response.ContentType = "application/json";

    // create new data access object
    DataAccessObject NewDao = Settings.Connection1DataAccessObject;

    string column_Name = "";
    string innerItems = "";
    string innerProductTypes = "";
    string sqlRowString = "";
    string _pid = Request.QueryString["pid"];
    string innerColumnKeyNames = "";
    string innerColumnKeyValues = "";
    string productTypeFooter = "";

    // check the querystring for the filter key id for the category table Product_Type
    if (_pid != null && _pid.Length != 0) {

    // get columns from the table dynamically. This was the start of an attempt to get the key(column) and row(values) from a standard select below. 
    // ive taken the hardcoded approach for now in setting the product type    
    SqlCommand SelectCol = new SqlCommand("SELECT TOP 1 *  FROM customtable_Rates_Items",NewDao);
    DataColumnCollection newColumn = SelectCol.Execute().Tables[0].Columns;

            for(int x = 0; x < newColumn.Count; x++){
                    column_Name = newColumn[x].ToString();
                    sqlRowString += column_Name +",";
            }     

    // remove the last , in sqlRowString
    sqlRowString = sqlRowString.TrimEnd(',');

        // Get Items
        SqlCommand Select = new SqlCommand("SELECT "+sqlRowString+" FROM customtable_Rates_Items WHERE Rates_Product_Type_ID="+ 
        NewDao.ToSql(_pid.ToString()+" order by Order_Precedence",FieldType.Integer),NewDao);

        DataRowCollection newDr = Select.Execute().Tables[0].Rows;

            // Get Product Type - Name
            SqlCommand Select2 = new SqlCommand("SELECT ItemID,Product_Type_Name,Product_Type_Footer, Product_Type_Header, Column_Key_Names, Column_Display_Values FROM customtable_Rates_Product_Type WHERE ItemID="+ 
            NewDao.ToSql(_pid.ToString(),FieldType.Integer),NewDao);

            DataRowCollection newDr2 = Select2.Execute().Tables[0].Rows;
                    innerProductTypes =  "\n    {\"Product_Type_Name\" : \"" + newDr2[0]["Product_Type_Name"] + "\" } \n        ";
                    innerColumnKeyNames = ""+newDr2[0]["Column_Key_Names"];
                    innerColumnKeyValues = ""+newDr2[0]["Column_Display_Values"];
                    productTypeFooter = ""+newDr2[0]["Product_Type_Footer"];

        for(int y = 0; y < newDr.Count; y++){
            // add key name and value output elements here for json output.
            innerItems += "\n    {";
            innerItems +="\"ItemID\" : "+ "\"" + newDr[y]["ItemID"] + "\" , \"Daily_Balance\" : "  + "\"" + newDr[y]["Daily_Balance"] + "\" , \"Dividend_Rate\" : "  + "\"" + newDr[y]["Dividend_Rate"] + "\" , \"Annual_Percentage_Yield\" : "  + "\"" + newDr[y]["Annual_Percentage_Yield"] + "\" , \"Period_of_Investment_Dividend\" : "  + "\"" + newDr[y]["Period_of_Investment_Dividend"] + "\" , \"Minimum_Investment\" : "  + "\"" + newDr[y]["Minimum_Investment"] + "\" , \"When_Dividend_Paid\" : "  + "\"" + newDr[y]["When_Dividend_Paid"] + "\" , \"Maximum_Of\" : "  + "\"" + newDr[y]["Maximum_Of"] + "\" , \"Interest_Rate\" : "  + "\"" + newDr[y]["Interest_Rate"] + "\" , \"Points\" : "  + "\"" + newDr[y]["Points"] + "\" , \"Annual_Percentage_Rate\" : "  + "\"" + newDr[y]["Annual_Percentage_Rate"] + "\" , \"Est_Monthly_Payments\" : "  + "\"" + newDr[y]["Est_Monthly_Payments"] + "\" , \"Max_Term\" : "  + "\"" + newDr[y]["Max_Term"] + "\" , \"Max_Amount\" : "  + "\"" + newDr[y]["Max_Amount"] + "\" , \"Max_LTV_Percent\" : "  + "\"" + newDr[y]["Max_LTV_Percent"] + "\" , \"Loan_Type\" : "  + "\"" + newDr[y]["Loan_Type"] + "\" , \"Card_Type\" : "  + "\"" + newDr[y]["Card_Type"] + "\" } \n        ,";
        }     
         innerItems = innerItems.TrimEnd(',');      //this can be done better
         //Output directly the json dataset record.
         Response.Write("[\r");     
         Response.Write("{\r");
         Response.Write("\"pid\": \"1\",\n");
         Response.Write("\"footer\": \""+productTypeFooter+"\",\n");
         Response.Write("\"column_key_names\":[\r" + innerColumnKeyNames + "\r],\n\r");
         Response.Write("\"column_key_values\":[\r" + innerColumnKeyValues + "\r],\n\r");
         Response.Write("\"product_type\":[\r" + innerProductTypes + "\r],\n\r");
         Response.Write("\"items\":[\r" + innerItems + "\r]");
         Response.Write("\r}\r]\r");
      }

パラメータで呼び出されると、次のようなものが返されます

[
          {
            "pid": "1",
            "footer": "*Annual Percentage Yield",
            "column_key_names": [
              "Daily_Balance",
              "Dividend_Rate",
              "Annual_Percentage_Yield",
              "Max_LTV_Percent"
            ],
            "column_key_values": [
              "foo",
              "bar",
              "dude",
              "test1"
            ],
            "product_type": [
              {
                "Product_Type_Name": "Checking Account Rates"
              }
            ],
            "items": [
              {
                "ItemID": "1",
                "Daily_Balance": "$0.00 - $999.99",
                "Dividend_Rate": "0.00%",
                "Annual_Percentage_Yield": "0.00%",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "66 month term = 120% of factory invoice plus tax, license, GAP and extended warranty. No additional discounts may be applied. 75 and 84 month financing available at slightly higher interest rates. 48 month term does not qualify for relationship pricing discounts.",
                "Loan_Type": "",
                "Card_Type": ""
              },
              {
                "ItemID": "2",
                "Daily_Balance": "$1,000.00 - $9,999.99",
                "Dividend_Rate": "0.01%",
                "Annual_Percentage_Yield": "0.01%",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "Interest_Rate",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "",
                "Loan_Type": "",
                "Card_Type": ""
              },
              {
                "ItemID": "3",
                "Daily_Balance": " $10,000.00 +",
                "Dividend_Rate": "0.02%",
                "Annual_Percentage_Yield": "0.02%",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "Interest_Rate",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "",
                "Loan_Type": "",
                "Card_Type": ""
              },
              {
                "ItemID": "4",
                "Daily_Balance": "<strong>Ultra Rewards Rates<\/strong>",
                "Dividend_Rate": "",
                "Annual_Percentage_Yield": "",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "Interest_Rate",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "",
                "Loan_Type": "",
                "Card_Type": ""
              },
              {
                "ItemID": "5",
                "Daily_Balance": "$0 - 25,000.00",
                "Dividend_Rate": "0.65%",
                "Annual_Percentage_Yield": "0.65%",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "Interest_Rate",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "",
                "Loan_Type": "",
                "Card_Type": ""
              },
              {
                "ItemID": "6",
                "Daily_Balance": "$25,000.01 +",
                "Dividend_Rate": "0.02%",
                "Annual_Percentage_Yield": "0.02%",
                "Period_of_Investment_Dividend": "",
                "Minimum_Investment": "",
                "When_Dividend_Paid": "",
                "Maximum_Of": "",
                "Interest_Rate": "Interest_Rate",
                "Points": "",
                "Annual_Percentage_Rate": "",
                "Est_Monthly_Payments": "",
                "Max_Term": "",
                "Max_Amount": "",
                "Max_LTV_Percent": "",
                "Loan_Type": "",
                "Card_Type": ""
              }
            ]
          }
        ]

最後に、Ajax/ または jQuery の get または load を使用して、このスクリプトをクエリします。

于 2015-07-26T04:38:19.877 に答える