如何搜索带引号的字符串?

时间:2010-04-13 17:27:33

标签: c#

我正在搜索字符串

<!--m--><li class="g w0"><h3 class=r><a href="

在此链接的HTML源代码中:

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=Santarus+Inc

我正在寻找它:

string html_string = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=" + biocompany;
html = new WebClient().DownloadString(html_string);

d=html.IndexOf(@"<!--m--><li class=""g w0""><h3 class=r><a href=""",1);

由于某种原因,它在第45位发现了它(换句话说,d = 45),但这是不正确的。

以下是字符串HTML的前几百个字符:

<!doctype html><head><title>Santarus Inc&#8206; - Google Search</title><script>window.google={kEI:\"b6jES5nPD4rysQOokrGDDQ\",kEXPI:\"23729,24229,24249,24260,24414,24457\",kCSI:{e:\"23729,24229,24249,24260,24414,24457\",ei:\"b6jES5nPD4rysQOokrGDDQ\",expi:\"23729,24229,24249,24260,24414,24457\"},ml:function(){},kHL:\"en\",time:function(){return(new Date).getTime()},log:function(b,d,c){var a=new Image,e=google,g=e.lc,f=e.li;a.onerror=(a.onload=(a.onabort=function(){delete g[f]}));g[f]=a;c=c||\"/gen_204?atyp=i&ct=\"+b+\"&cad=\"+d+\"&zx=\"+google.time();a.src=c;e.li=f+1},lc:[],li:0,Toolbelt:{}};\nwindow.google.sn=\"web\";window.google.timers={load:{t:{start:(new Date).getTime()}}};try{}catch(u){}window.google.jsrt_kill=1;\n</script><style>body{background:#fff;color:#000;margin:3px 8px}#gbar,#guser{font-size:13px;padding-top:1px !important}#gbar{float:left;height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh

3 个答案:

答案 0 :(得分:3)

您没有搜索您说的字符串。

如果您正在搜索此内容:

<!--m--><li class="g w0"><h3 class=r>

使用此:

@"<!--m--><li class=""g w0""><h3 class=r>"

@"<!--m--><li class=""g w0""><h3 class=r><a href="""

更新:(以下评论)

我按照您使用过的网址进行了谷歌搜索。我发现没有<li>标记带引号class属性的情况。你在寻找正确的字符串吗?

答案 1 :(得分:1)

发布更多代码。我的猜测是你的html变量没有存储你认为它是什么。你是否偶然地逐行阅读html?您是在追加或替换先前的内容吗?无论如何,在.IndexOf调用之前或之后立即设置一个断点并检查html的内容。

编辑我浏览了您的代码示例,但未找到您的字符串。

string biocompany = "Santarus Inc‎";
string html_string = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=" + biocompany;
using (WebClient client = new WebClient())
{
    string html = client.DownloadString(html_string);
    int d = html.IndexOf(@"<!--m--><li class=""g w0""><h3 class=r>");
    Console.WriteLine(d);
}

根据您发布的代码,我不确定您在做什么。

答案 2 :(得分:0)

Anthony has given correct solution.

但是,与在代码中下载相比,浏览器显示的下载html也是不同的。

这就是为什么返回的索引变为-1,甚至不是45,如“every_answer_gets_a_point”所述:)

这是另一个问题 - 为什么会这样。

就搜索而言,安东尼已经给出了答案。