首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# .也许比这个更精确的网刮刀

c# .也许比这个更精确的网刮刀
EN

Stack Overflow用户
提问于 2017-07-20 23:21:50
回答 2查看 77关注 0票数 0

我试图刮http://gameinfo.na.leagueoflegends.com/en/game-info/champions/,但我找不到在我的网刮冠军的图片在哪里。问题是它没有刮到每件东西..。我的剧本是。

代码语言:javascript
复制
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Net;

namespace WebScraping 
{ 
   class Program
   { 
      static void Main(string[] args) { 
      WebScraping wb = new WebScraping(); 
      wb.Scraping(); 
   }
   class WebScraping
   {
      public void Scraping()
      {
          Console.WriteLine("Type in the webpage you want to scrape : \n");
          string WebPage = Console.ReadLine();
          WebClient webc = new WebClient();
          string url = webc.DownloadString(WebPage);`

          Console.WriteLine(url += "\n \t Done");
          Console.ReadLine();
      }
    }
  }

我想找的是<a href="amumu"/></a>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-21 00:49:16

您说得对:数据不在原始HTML中。相反,冠军网格是通过javascript填充的。这实际上对您有好处;这意味着您可能能够以json格式获取英雄信息,这要容易得多。唯一的诀窍是找到该javascript的加载位置。

为此,请在浏览器中加载页面并使用开发人员工具。我将以Google为例。点击F12打开开发工具,然后转到Network选项卡。现在点击Shift+F5重新加载页面,记录请求。完成此操作后,您可以查看下载的每一项以呈现此页面。我看到了一个完整的238个请求(这是很多!),但是如果您在列表中搜索json项,您最终会看到一个champions.json文件。右键单击它,您就可以得到这个url:

US/champion.json

查看该文件中的数据,您将发现以下内容:

代码语言:javascript
复制
"Amumu":
{
   "version":"6.24.1",
    "id":"Amumu",
    "key":"32",
    "name":"Amumu",
    "title":"the Sad Mummy",
    "blurb":"''Solitude can be lonelier than death.''<br><br>A lonely and melancholy soul from ancient Shurima, Amumu roams the world in search of a friend. Cursed by an ancient spell, he is doomed to remain alone forever, as his touch is death and his affection ...",
    "info":
    {
        "attack":2,
        "defense":6,
        "magic":8,
        "difficulty":3
    },
    "image":
    {
        "full":"Amumu.png",
        "sprite":"champion0.png",
        "group":"champion",
        "x":192,
        "y":0,
        "w":48,
        "h":48
    },
    "tags":["Tank","Mage"],
    "partype":"MP",
    "stats":
    {
        "hp":613.12,
        "hpperlevel":84.0,
        "mp":287.2,
        "mpperlevel":40.0,
        "movespeed":335.0,
        "armor":23.544,
        "armorperlevel":3.8,
        "spellblock":32.1,
        "spellblockperlevel":1.25,
        "attackrange":125.0,
        "hpregen":8.875,
        "hpregenperlevel":0.85,
        "mpregen":7.38,
        "mpregenperlevel":0.525,
        "crit":0.0,
        "critperlevel":0.0,
        "attackdamage":53.384,
        "attackdamageperlevel":3.8,
        "attackspeedoffset":-0.02,
        "attackspeedperlevel":2.18
    }
}

使用NuGet可以使用JSON解析器,您可以从其中快速获取结构化数据。

票数 3
EN

Stack Overflow用户

发布于 2017-07-21 22:58:20

Regex帮我匹配了我需要的信息

代码语言:javascript
复制
 MatchCollection m1 = Regex.Matches(html, "\"id\":\"(.+?)\",\"", RegexOptions.Singleline);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45226659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档