首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抓取并放置将转到链接有效href链接

如何抓取并放置将转到链接有效href链接
EN

Stack Overflow用户
提问于 2012-08-18 02:21:17
回答 1查看 394关注 0票数 0

我已经刮掉了一个网页,但我希望链接有有效的链接,并将跳转到该链接页面时点击。

前抓取的数据:第1天-转到我的页面-状态

我希望转到我的页面跳转到它的href中的任何链接。

例如。我得到的实际html

代码语言:javascript
复制
<td><a href="javascript:jsFormAuth('summary.php?meetingid=40456&plusday=0');">Go to my Page</a></td>

我需要这样做:

代码语言:javascript
复制
<td><a href="http://somewebsite.com/tab/form/summary.php?meetingid=40456&plusday=0');">Go to my Page</a></td>

下面是我的抓取代码:

代码语言:javascript
复制
public string ScreenScrape()
        {
            string url = "http://somewebsite.com/tab/form/index.php";
            string strResult = "";

            WebResponse objResponse;
            WebRequest objRequest = System.Net.HttpWebRequest.Create(url);

            objResponse = objRequest.GetResponse();

            using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
            {
                strResult = sr.ReadToEnd();
                // Close and clean up the StreamReader
                sr.Close();
            }
            var webGet = new HtmlAgilityPack.HtmlWeb();
            var doc = webGet.Load(url);

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
                HtmlAttribute att = link.Attributes["href"];
                att.Value = "http://somewebsite.com/tab/form/"+att.Value;
            }


            return strResult;
        }

下面是我尝试更改链接并删除javascript字符串,但无法确定如何找到正确的索引。此外,一旦我能够更改它,我如何将strResult(上面)中的每个href替换为新的href?

代码语言:javascript
复制
    foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
    {
        HtmlAttribute att = link.Attributes["href"];
        att.Value = "http://somewebsite.com/tab/form/" + ....
    }

有谁能帮帮我吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-08-18 12:09:20

不要紧,我明白了,但我知道html url解析不是最好的方式(如果你有更好的解析建议,请照做)。现在,唯一的目标是更改href链接,这样就可以开始了。

代码语言:javascript
复制
 public string ScreenScrape()
        {
            string url = "http://somewebsite.com/tab/form/index.php";
            string strResult = "";

            WebResponse objResponse;
            WebRequest objRequest = System.Net.HttpWebRequest.Create(url);

            objResponse = objRequest.GetResponse();

            using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
            {
                strResult = sr.ReadToEnd();
                // Close and clean up the StreamReader
                sr.Close();
            }
            var webGet = new HtmlAgilityPack.HtmlWeb();
            var doc = webGet.Load(url);

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {

                string removeString ="javascript:jsFormAuth('";
                string removeEnd = "');";
                HtmlAttribute att = link.Attributes["href"];
                String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(att.XPath, "(");
                string sub1 = att.Value.Replace(removeString,"");
                string sub2 = sub1.Replace(removeEnd,"");
                att.Value = "http://somewebsite.com/tab/form/" + sub2;

            }

            return doc.DocumentNode.InnerHtml;

        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12011148

复制
相关文章

相似问题

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