-
第 31 楼 / webdriver
- 时间: 2014-3-05 23:43通过上面的分析,基本上我得到了一个产品分类下的url的产生机制,这个正是spider工作的起点或者叫入口。。。
上述分析的结果是,“digital camera”子类,采用gallery方式显示,每页96个items,其url产生规律是:
HTTP : //www.ebay.ca/sch/Digital-Cameras-/31388/i.html?_pgn=[n]&_skc=[(n-1)x96]&rt=nc
但是,这只是小小的第一步而已。。。 -
-
第 32 楼 / webdriver
- 时间: 2014-3-05 23:46
-
-
第 33 楼 / webdriver
- 时间: 2014-3-05 23:56有了页面的url,接下来谈的是如何抓页面
所谓页面,简单说就是html格式的文本内容,最简单的方法,在当前浏览器页面,右键点击,view page source,你能看到的内容正是你目前浏览器所接收到的页面源码 -- 以前web 1.0时候,都是预先写好的静态页面或者后端组合好的静态页面,传到浏览器里进行解释,渲染,显示。现在浏览器技术先进了,页面里除了静态的数据,还有格式定义,还有javascript blocks,至于如何显示完全靠browser自己发挥。
但我做的是spider,显然不能“view page source”在copy/paste,对吧,所以要编程实现 -
第 34 楼 / webdriver
- 时间: 2014-3-06 00:00
-
第 35 楼 / webdriver
- 时间: 2014-3-06 00:04c# 页面访问的代码
url 就是我上面提到的能够根据种子自动生成的。
得到html保存在response里。
_BBCODE_CODE:
using System.Net;
namespace MySpider {
....
public static void AccessPage(string url, out string response, out bool success)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
// Set some reasonable limits on resources used by this request
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
// Set credentials to use for this request.
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse rs = (HttpWebResponse)request.GetResponse();
// Get the stream associated with the response.
Stream receiveStream = rs.GetResponseStream();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
response = readStream.ReadToEnd();
rs.Close();
readStream.Close();
success = true;
}
catch
{
response = null;
success = false;
}
}
....
}
-
第 36 楼 / webdriver
- 时间: 2014-3-06 00:09
-
第 37 楼 / cet6
- 时间: 2014-3-06 00:45
-
第 38 楼 / webdriver
- 时间: 2014-3-06 23:49要完成网页分析,工具很重要;如果编程,那么library很重要。
网页是纯文本文件,因此regular expression必然是首选。
在编程实现RegExp前,先要在交互环境下搞定pattern。
这里推荐 Expresso软件 www.ultrapico.com/expresso.htm 免费,我用着挺好 -
第 39 楼 / webdriver
- 时间: 2014-3-06 23:54网页都是Html,标记语言的一种,通过keyword pair来组织表达信息,因此在某些信息block中,用XPath来查找信息更为方便。
偶自己喜欢用VS/C#,自然找的.NET的方案,最后选的这个 htmlagilitypack.codeplex.com/ -
第 40 楼 / 名震一方
- 时间: 2014-3-07 00:02