C# SelectNode始终选择可枚举中的第一个节点<;HtmlNode>;迭代时
我试图从多个htmlnodes集合中解析多个键,我会使用selectnodes->div[@class=“key”]来完成这项工作,但出于某种原因,这总是选择所有键,但我希望这些键采用列表格式,其中列表索引引用行索引,在这之后,我尝试选择一个节点,但从逻辑上讲,这总是选择“esc”键,因为这是第一行/索引,你知道我如何将它们分开吗 DirtyFix:C# SelectNode始终选择可枚举中的第一个节点<;HtmlNode>;迭代时,c#,html-agility-pack,C#,Html Agility Pack,我试图从多个htmlnodes集合中解析多个键,我会使用selectnodes->div[@class=“key”]来完成这项工作,但出于某种原因,这总是选择所有键,但我希望这些键采用列表格式,其中列表索引引用行索引,在这之后,我尝试选择一个节点,但从逻辑上讲,这总是选择“esc”键,因为这是第一行/索引,你知道我如何将它们分开吗 DirtyFix: var page = browser.Load(layout_link); var key_row
var page = browser.Load(layout_link);
var key_rows = Enumerable.Range(1, 6).
Select(i => $"//div[@class=\"kr{i}\"]").
Select(row => page.DocumentNode.SelectSingleNode(row)).
Select(row => row.OuterHtml.Split('\n').Select(raw_html => HtmlNode.CreateNode(raw_html)));
资料来源:
class KeyboardLayoutScraper
{
private static readonly HtmlWeb browser = new HtmlWeb();
public static readonly string base_website = "http://kbdlayout.info";
// Currently voided for testing
public static void fetchKeyboardLayout()
{
var layout_link = GetKBLayoutSource();
if (layout_link == null) throw new ArgumentNullException();
else
{
var page = browser.Load(layout_link);
var key_rows = Enumerable.Range(1, 6).
Select(i => $"//div[@class=\"kr{i}\"]").
Select(row => page.DocumentNode.SelectSingleNode(row));
foreach(var key_row in key_rows)
{ // Always selects the "ESC" key?
Console.WriteLine(key_row.SelectSingleNode("//div[@class=\"key\"]").InnerText);
// Always returns 105
Console.WriteLine(key_row.SelectNodes("//div[@class=\"key\"]").Count);
}
}
}
// fetch page where structure is located
private static string GetKBLayoutSource()
{
var page = browser.Load(base_website);
var links_on_page = page.DocumentNode.SelectNodes("//a").
Where(i => i.InnerText.Contains(System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName)).
Select(i => $"{base_website}{i.Attributes["href"]?.Value}");
return links_on_page.FirstOrDefault();
}
}
HtmlStructure:
<div class="kr1">
<div class="key"><div class="kc"><div class="kb" style="left: 0px"></div><div class="kt" style="left: 6px"></div><div class="kls" style="left: 6px"><div class="kl kl0 ts5"><div></div></div><div class="kl kl4 ts4"><div title="Esc">Esc</div></div><div class="kl kl6 ts5"><div title=" U+001B <control>
SHIFT: U+001B <control>
CONTROL: U+001B <control>"></div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:108px"></div><div class="kt" style="left:114px"></div><div class="kls" style="left:114px"><div class="kl kl4 ts4"><div>F1</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:162px"></div><div class="kt" style="left:168px"></div><div class="kls" style="left:168px"><div class="kl kl4 ts4"><div>F2</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:216px"></div><div class="kt" style="left:222px"></div><div class="kls" style="left:222px"><div class="kl kl4 ts4"><div>F3</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:270px"></div><div class="kt" style="left:276px"></div><div class="kls" style="left:276px"><div class="kl kl4 ts4"><div>F4</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:351px"></div><div class="kt" style="left:357px"></div><div class="kls" style="left:357px"><div class="kl kl4 ts4"><div>F5</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:405px"></div><div class="kt" style="left:411px"></div><div class="kls" style="left:411px"><div class="kl kl4 ts4"><div>F6</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:459px"></div><div class="kt" style="left:465px"></div><div class="kls" style="left:465px"><div class="kl kl4 ts4"><div>F7</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:513px"></div><div class="kt" style="left:519px"></div><div class="kls" style="left:519px"><div class="kl kl4 ts4"><div>F8</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:594px"></div><div class="kt" style="left:600px"></div><div class="kls" style="left:600px"><div class="kl kl4 ts4"><div>F9</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:648px"></div><div class="kt" style="left:654px"></div><div class="kls" style="left:654px"><div class="kl kl4 ts4"><div>F10</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:702px"></div><div class="kt" style="left:708px"></div><div class="kls" style="left:708px"><div class="kl kl4 ts4"><div>F11</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:756px"></div><div class="kt" style="left:762px"></div><div class="kls" style="left:762px"><div class="kl kl4 ts4"><div>F12</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:824px"></div><div class="kt" style="left:830px"></div><div class="kls" style="left:830px"><div class="kl kl4 ts4"><div>PrtSc</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:878px"></div><div class="kt" style="left:884px"></div><div class="kls" style="left:884px"><div class="kl kl4 ts4"><div>Scroll Lock</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:932px"></div><div class="kt" style="left:938px"></div><div class="kls" style="left:938px"><div class="kl kl4 ts4"><div>Pause</div></div></div></div></div>
</div>
<div class="kr2">
<div class="key"><div class="kc"><div class="kb" style="left: 0px"></div><div class="kt" style="left: 6px"></div><div class="kls" style="left: 6px"><div class="kl kl0 ts5"><div>³</div></div><div class="kl kl6 ts5"><div title="² U+00B2 SUPERSCRIPT TWO
SHIFT: ³ U+00B3 SUPERSCRIPT THREE">²</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 54px"></div><div class="kt" style="left: 60px"></div><div class="kls" style="left: 60px"><div class="kl kl0 ts5"><div>1</div></div><div class="kl kl6 ts5"><div>&</div></div><div class="kl kl8 ts5"><div title="& U+0026 AMPERSAND
SHIFT: 1 U+0031 DIGIT ONE
CAPITAL: 1 U+0031 DIGIT ONE
SHIFT+CAPITAL: & U+0026 AMPERSAND
CONTROL+MENU: | U+007C VERTICAL LINE">|</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 108px"></div><div class="kt" style="left: 114px"></div><div class="kls" style="left: 114px"><div class="kl kl0 ts5"><div>2</div></div><div class="kl kl6 ts5"><div>é</div></div><div class="kl kl8 ts5"><div title="é U+00E9 LATIN SMALL LETTER E WITH ACUTE
SHIFT: 2 U+0032 DIGIT TWO
CAPITAL: 2 U+0032 DIGIT TWO
SHIFT+CAPITAL: é U+00E9 LATIN SMALL LETTER E WITH ACUTE
CONTROL+MENU: @ U+0040 COMMERCIAL AT">@</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 162px"></div><div class="kt" style="left: 168px"></div><div class="kls" style="left: 168px"><div class="kl kl0 ts5"><div>3</div></div><div class="kl kl6 ts5"><div>"</div></div><div class="kl kl8 ts5"><div title="" U+0022 QUOTATION MARK
SHIFT: 3 U+0033 DIGIT THREE
CAPITAL: 3 U+0033 DIGIT THREE
SHIFT+CAPITAL: " U+0022 QUOTATION MARK
CONTROL+MENU: # U+0023 NUMBER SIGN">#</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 216px"></div><div class="kt" style="left: 222px"></div><div class="kls" style="left: 222px"><div class="kl kl0 ts5"><div>4</div></div><div class="kl kl6 ts5"><div>'</div></div><div class="kl kl8 ts5"><div title="' U+0027 APOSTROPHE
SHIFT: 4 U+0034 DIGIT FOUR
CAPITAL: 4 U+0034 DIGIT FOUR
SHIFT+CAPITAL: ' U+0027 APOSTROPHE
CONTROL+MENU: { U+007B LEFT CURLY BRACKET">{</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 270px"></div><div class="kt" style="left: 276px"></div><div class="kls" style="left: 276px"><div class="kl kl0 ts5"><div>5</div></div><div class="kl kl6 ts5"><div>(</div></div><div class="kl kl8 ts5"><div title="( U+0028 LEFT PARENTHESIS
SHIFT: 5 U+0035 DIGIT FIVE
CAPITAL: 5 U+0035 DIGIT FIVE
SHIFT+CAPITAL: ( U+0028 LEFT PARENTHESIS
CONTROL+MENU: [ U+005B LEFT SQUARE BRACKET">[</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 324px"></div><div class="kt" style="left: 330px"></div><div class="kls" style="left: 330px"><div class="kl kl0 ts5"><div>6</div></div><div class="kl kl6 ts5"><div>§</div></div><div class="kl kl8 ts5"><div title="§ U+00A7 SECTION SIGN
SHIFT: 6 U+0036 DIGIT SIX
CAPITAL: 6 U+0036 DIGIT SIX
SHIFT+CONTROL: U+001E <control>
SHIFT+CAPITAL: § U+00A7 SECTION SIGN
CONTROL+MENU: ^ U+005E CIRCUMFLEX ACCENT">^</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 378px"></div><div class="kt" style="left: 384px"></div><div class="kls" style="left: 384px"><div class="kl kl0 ts5"><div>7</div></div><div class="kl kl6 ts5"><div title="è U+00E8 LATIN SMALL LETTER E WITH GRAVE
SHIFT: 7 U+0037 DIGIT SEVEN
CAPITAL: 7 U+0037 DIGIT SEVEN
SHIFT+CAPITAL: è U+00E8 LATIN SMALL LETTER E WITH GRAVE">è</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 432px"></div><div class="kt" style="left: 438px"></div><div class="kls" style="left: 438px"><div class="kl kl0 ts5"><div>8</div></div><div class="kl kl6 ts5"><div title="! U+0021 EXCLAMATION MARK
SHIFT: 8 U+0038 DIGIT EIGHT
CAPITAL: 8 U+0038 DIGIT EIGHT
SHIFT+CAPITAL: ! U+0021 EXCLAMATION MARK">!</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 486px"></div><div class="kt" style="left: 492px"></div><div class="kls" style="left: 492px"><div class="kl kl0 ts5"><div>9</div></div><div class="kl kl6 ts5"><div>ç</div></div><div class="kl kl8 ts5"><div title="ç U+00E7 LATIN SMALL LETTER C WITH CEDILLA
SHIFT: 9 U+0039 DIGIT NINE
CAPITAL: 9 U+0039 DIGIT NINE
SHIFT+CAPITAL: ç U+00E7 LATIN SMALL LETTER C WITH CEDILLA
CONTROL+MENU: { U+007B LEFT CURLY BRACKET">{</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 540px"></div><div class="kt" style="left: 546px"></div><div class="kls" style="left: 546px"><div class="kl kl0 ts5"><div>0</div></div><div class="kl kl6 ts5"><div>à</div></div><div class="kl kl8 ts5"><div title="à U+00E0 LATIN SMALL LETTER A WITH GRAVE
SHIFT: 0 U+0030 DIGIT ZERO
CAPITAL: 0 U+0030 DIGIT ZERO
SHIFT+CAPITAL: à U+00E0 LATIN SMALL LETTER A WITH GRAVE
CONTROL+MENU: } U+007D RIGHT CURLY BRACKET">}</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 594px"></div><div class="kt" style="left: 600px"></div><div class="kls" style="left: 600px"><div class="kl kl0 ts5"><div>°</div></div><div class="kl kl6 ts5"><div title=") U+0029 RIGHT PARENTHESIS
SHIFT: ° U+00B0 DEGREE SIGN
CAPITAL: ° U+00B0 DEGREE SIGN
SHIFT+CAPITAL: ) U+0029 RIGHT PARENTHESIS">)</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 648px"></div><div class="kt" style="left: 654px"></div><div class="kls" style="left: 654px"><div class="kl kl0 ts5"><div>_</div></div><div class="kl kl6 ts5"><div title="- U+002D HYPHEN-MINUS
SHIFT: _ U+005F LOW LINE
CONTROL: U+001F <control>
CAPITAL: _ U+005F LOW LINE
SHIFT+CAPITAL: - U+002D HYPHEN-MINUS">-</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 702px;width:108px"></div><div class="kt" style="left:708px;width:96px"></div><div class="kls" style="left:708px"><div class="kl kl0 ts5" style="width:90px;"><div style="width:90px;max-width:90px;"></div></div><div class="kl kl4 ts4" style="width:90px;"><div style="width:90px;max-width:90px;" title="Backspace">Backspace</div></div><div class="kl kl6 ts5" style="width:90px;"><div style="width:90px;max-width:90px;" title=" U+0008 <control>
SHIFT: U+0008 <control>
CONTROL: U+007F <control>"></div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 824px"></div><div class="kt" style="left: 830px"></div><div class="kls" style="left: 830px"><div class="kl kl4 ts4"><div>Insert</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 878px"></div><div class="kt" style="left: 884px"></div><div class="kls" style="left: 884px"><div class="kl kl4 ts4"><div>Home</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 932px"></div><div class="kt" style="left: 938px"></div><div class="kls" style="left: 938px"><div class="kl kl4 ts4"><div>Page Up</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 999px"></div><div class="kt" style="left:1005px"></div><div class="kls" style="left:1005px"><div class="kl kl4 ts4"><div>Num Lock</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1053px"></div><div class="kt" style="left:1059px"></div><div class="kls" style="left:1059px"><div class="kl kl0 ts5"><div>/</div></div><div class="kl kl6 ts5"><div title="/ U+002F SOLIDUS
SHIFT: / U+002F SOLIDUS">/</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1107px"></div><div class="kt" style="left:1113px"></div><div class="kls" style="left:1113px"><div class="kl kl0 ts5"><div>*</div></div><div class="kl kl6 ts5"><div title="* U+002A ASTERISK
SHIFT: * U+002A ASTERISK">*</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1161px"></div><div class="kt" style="left:1167px"></div><div class="kls" style="left:1167px"><div class="kl kl0 ts5"><div>-</div></div><div class="kl kl6 ts5"><div title="- U+002D HYPHEN-MINUS
SHIFT: - U+002D HYPHEN-MINUS">-</div></div></div></div></div>
</div>
etc...
;Esc和x1B;
一层楼
地上二层
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
PrtSc
滚动锁
暂停
³²
一,|
2é@
3"#
4'{
5([
6§^
7è
8.
9ç{
0à}
°)
_-
退格;
插入
家
翻页
数字锁
//
**
--
等