<td class="lineitem">964.00 oz</td>
<td class="lineitem" align="right" bgcolor="#141414"><font color="#33ff66">230.00</td>
<td class="lineitem" align="right">$460</td>
<td class="lineitem" align="right">1.00</td>
<td class="lineitem" align="right">$2.00</td>
从此我想得到:964.00,230.00,460,1.00,2.00 并将它们保存为字符串以便稍后使用
提前致谢
我试过了:
string bleh = ("http://www.drugrunners.net/quickBuySummary.cfm?");
string[] qual = Regex.Split(bleh, "<td class=");
for (int i = 1; i < qual.Length; i++)
{
switch (i)
{
case 1:
Details[0] = Regex.Split(qual[i], "\">")[0];
button3.Text = Regex.Split(qual[i], "\">")[1]
break;
答案 0 :(得分:1)
您需要的是像HtmlAgilityPack
这样的网络抓取工具
这里有一个例子
HtmlDocument doc = new HtmlDocument();
doc.Load("http://yourUrl")
var findclasses = doc.DocumentNode.Descendants("td").Where(d =>
d.Attributes.Contains("class") && d.Attributes["class"].Contains("lineitem")
);
答案 1 :(得分:0)
new System.Text.RegularExpressions.Regex("^<td class=\"lineitem\".*>(?<number>.*)</td>$")
将从您发布的行中分别捕获964.00盎司,230.00,$ 460,1.00和$ 2.00。
它确实要求您一次运行一行,并且您还必须弄清楚如何处理您的单位。
答案 2 :(得分:0)
您需要检索远程网页并“抓取”#39;它使用像html agility pack这样的库:
关于检索它,这个SO link非常有用:
protected void getHtml(string url){
WebClient client = new WebClient();
string downloadString = client.DownloadString(url);
return downloadString;
}
然后,一旦你从字符串中创建一个html文档(不确定如何做,但应该是一个没脑子),你可以使用html agility pack and XPATH解析它;
最终,我认为你可以按照this CodeProject tutorial获得你想要的东西,并且你得到这样的东西:
protected void ClickMeButton_Click(object sender, EventArgs e){
var document = getHtml("http://url.to.your/page");
var tdTags = document.DocumentNode.SelectNodes("//td"); //use a xpath expression to select contents
int counter = 1;
if (aTags != null)
{
foreach (var aTag in aTags){
myVarToSave = tdTag.InnerHtml ;
}
}
答案 3 :(得分:0)
正则表达式模式可以是>\$?([\d\.]+).*<
意义:
在php中,
preg_match_all(
'@>\\$*([\\d\\.]+)<@',
'<td class="lineitem">964.00 oz</td>
<td class="lineitem" align="right" bgcolor="#141414"><font color="#33ff66">230.00</td>
<td class="lineitem" align="right">$460</td>
<td class="lineitem" align="right">1.00</td>
<td class="lineitem" align="right">$2.00</td>',
$matches
);
返回
$matches => array (
0 => array (
0 => '>964.00 oz<',
1 => '>230.00<',
2 => '>$460<',
3 => '>1.00<',
4 => '>$2.00<',
),
1 => array (
0 => '964.00',
1 => '230.00',
2 => '460',
3 => '1.00',
4 => '2.00',
),
)
答案 4 :(得分:0)
我的问题是,你在做什么(在你的例子中)是否有效?您的string bleh
行告诉我其他情况。您显然正在处理需要身份验证的页面,因此您无法在HtmlDocument.Load上访问该文档。在你刮掉页面之前,这比做任何这些答案要困难一些。你需要弄明白:
您可以在S.O.上单独查找这些点。或其他地方。
你可以采取其他路径并手动下载页面,如果它适合你,然后你可以做一个IO.File方法打开文件,你可以提供给HtmlDocument.LoadHtml(),这意味着你可以跳到3号。