我已经刮掉了一个网页,但我希望链接有有效的链接,并将跳转到该链接页面时点击。
前抓取的数据:第1天-转到我的页面-状态
我希望转到我的页面跳转到它的href中的任何链接。
例如。我得到的实际html
<td><a href="javascript:jsFormAuth('summary.php?meetingid=40456&plusday=0');">Go to my Page</a></td>我需要这样做:
<td><a href="http://somewebsite.com/tab/form/summary.php?meetingid=40456&plusday=0');">Go to my Page</a></td>下面是我的抓取代码:
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?
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
HtmlAttribute att = link.Attributes["href"];
att.Value = "http://somewebsite.com/tab/form/" + ....
}有谁能帮帮我吗?谢谢
发布于 2012-08-18 12:09:20
不要紧,我明白了,但我知道html url解析不是最好的方式(如果你有更好的解析建议,请照做)。现在,唯一的目标是更改href链接,这样就可以开始了。
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;
}https://stackoverflow.com/questions/12011148
复制相似问题