程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

C# IndexOf 函数未按预期工作

发布于2023-12-26 22:14     阅读(422)     评论(0)     点赞(7)     收藏(5)


所以,我对编码相当陌生,但到目前为止我从未遇到过 IndexOf 问题。我正在尝试搜索一个 html 字符串,如下所示:

“ data-pid=\"6598160343\">\n\n https://minneapolis.craigslist.org/dak/fuo/d/executive-desk-3-piece-set/6598160343.html\" class=\"结果图像库\" data-ids=\"1:00B0B_hkRi5TEyM9Q,1:00z0z_jTtBxHxlxAZ,1:00p0p_2GU15WOHDEB,1:00909_eKQVd7O1pfE\">\n $1500\n \n\n \n \n 收藏此帖子\n \
n \n 6 月 4 日\n\n\n https://minneapolis.craigslist.org/dak/fuo/d/executive-desk-3-piece-set/6598160343.html\" data-id=\"6598160343\" class=\"result-title hdrlnk\">行政办公桌(3 件套)\n\n\n \n
$1500\n\n\n\n \n 图片\n
地图\n
\n\n \n 隐藏此帖子\n
\n\n \n \n 恢复\n 恢复此帖子\n
\n\n \n

\n\n" 字符串

我试图找到特定元素的索引,以便稍后可以获取数据,这是我必须找到的数据两侧位置的索引:

DataBookends bkEnds = new DataBookends
        {
            PIDFrom = (post.IndexOf(@"pid=\""")) + (@"pid=\""".Length),
            URLFrom = (post.IndexOf(@"<a href=\")) + (@"<a href=\".Length),
            PriceFrom = (post.IndexOf(@"result-price\"">$")) + (@"result-price\"">$".Length),
            DateFrom = (post.IndexOf(@"datetime=\""")) + (@"datetime=\""".Length),
            TitleFrom = (post.IndexOf(@"result-title hdrlnk\"">")) + (@"result-title hdrlnk\"">".Length),
            LocationFrom = (post.IndexOf(@"result-hood\""> (")) + (@"result-hood\""> (".Length)
        };
        bkEnds.PIDTo = post.IndexOf(@"\""", bkEnds.PIDFrom);
        bkEnds.URLTo = post.IndexOf(@"\", bkEnds.URLFrom);
        bkEnds.PriceTo = post.IndexOf(@"</span>", bkEnds.PriceFrom);
        bkEnds.DateTo = post.IndexOf(@"\", bkEnds.DateFrom);
        bkEnds.TitleTo = post.IndexOf(@"</a>", bkEnds.TitleTo);
        bkEnds.LocationTo = post.IndexOf(@"\", bkEnds.LocationFrom);

        return bkEnds;

但是,每当我尝试运行它时,它要么找不到任何内容,要么索引值不正确。我知道我错过了一些简单的东西,但我无法弄清楚,我感觉自己像个白痴。这是否与我没有看到的转义字符有关,或者与我的字符串格式有关?请帮助?

编辑:我最初尝试使用 HTML Agility Pack,但我无法理解如何提取所需的数据,因此我认为使用 string.substring() 会更简单。即使在我尝试添加正斜杠之前,我得到的索引值也是完全错误的。我会摆脱那些。


解决方案


所以我想通了,我最终按照 Jeremy 的建议选择了 HTML Agility Pack。我无法弄清楚我使用 IndexOf 和 Substring 进行搜索的方式到底出了什么问题(例如:它会跳过“”并继续,直到不包含任何这些字符的点),但是我不会再尝试以这种方式进行网络抓取。

对于未来,HTML Agility Pack 是必经之路!




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/533297/af1e2d78befceeeb8a4d/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)