如何抽取数据
我从这个网址试图刮数据:http://icecat.biz/en/p/Coby/DP102/desc.htm如何抽取数据
我想刮的是来自该网址规格表。
但我检查了spec table没有显示的url的源代码,因为我认为该表使用Ajax加载。
我怎样才能得到那张桌子。需要做什么?
我用下面的代码:
string Strproducturl = "http://icecat.biz/en/p/Coby/DP102/desc.htm";
System.Net.ServicePointManager.Expect100Continue = false;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Strproducturl);
httpWebRequest.KeepAlive = true;
ASCIIEncoding encoding = new ASCIIEncoding();
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
string response = streamReader.ReadToEnd();
我会建议你使用一个库像HtmlAgilityPack选择HTML文档中的各种元素。
我快速查看了链接,并注意到数据实际上是使用addtional ajax请求加载的。您可以使用以下网址获得AJAX数据
http://icecat.biz/index.cgi?ajax=productPage;product_id=1091664;language=en;request=feature
使用HtmlAgilityPack来分析这些数据。
正如IanNorton提到的那样,您需要向URL请求URL,以便使用AJAX加载规格的URL。对于您提供的示例链接,规格细节URL,你将需要请求将是:
http://icecat.biz/index.cgi?ajax=productPage;product_id=1091664;language=en;request=feature
然后,您可以通过HTML响应你的方式来获得您所需要的规格细节。
您在评论中提到刮取过程是自动化的。规格网址为基本格式,您只需要产品ID即可。但是,如果您没有这些ID,只是一系列网址(例如原始问题中的示例),则需要从您拥有的网址获取产品ID。
例如,你给的网址例如重定向到一个不同的URL:
此URL包含产品ID,就在年底。
你可以做一个HttpWebRequest
原来的网址,阻止它重定向之前,赶上重定向URL:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://icecat.biz/en/p/Coby/DP102/desc.htm");
request.AllowAutoRedirect = false;
request.KeepAlive = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if(response.StatusCode == HttpStatusCode.Redirect){
string redirectUrl = response.GetResponseHeader("Location");
}
一旦你得到了redirectUrl
变量,你可以使用Regex
来获取ID然后执行另一个HttpWebRequest
到规格详细的URL。
string redirectUrl = response.GetResponseHeader(“Location”); 位置意味着什么?我的意思是我需要进入那里? 你能帮忙吗? – user1203653 2012-02-11 13:06:12
'redirectUrl'的值将成为示例网址重定向到的URL,其中包含产品ID:http://icecat.biz/p/coby/dp102/digital-photo-frames-0716829961025-dp -102-digital-photo-frame-1091664.html这有帮助吗? – 2012-02-11 14:19:39
我知道这是很老,但你可以更容易地距离
https://openIcecat-xml:[email protected]/export/freexml.int/EN/1091664.xml
检索XML您也将获得所有图像和描述以及:-)
我第一次的猜测会在这里是你需要进行ajax调用,你可能会得到json,这比网页抓取更容易 – IanNorton 2012-02-11 11:32:10
数据表的ajax调用似乎是urls:http://icecat.biz/index.cgi?ajax = productPage; product_id = 1091664; language = en; request = feature – IanNorton 2012-02-11 11:34:19
但所有这个过程都是自动化的。我给出了你只是为了一个例子的网址。我也检查过响应,但该规范表源是在响应。 – user1203653 2012-02-11 11:40:48