UmichEECS499ProjectTeam / LOL_Crawler

LOL_Crawler
0 stars 0 forks source link

Add general crawler #1

Open chenditc opened 10 years ago

chenditc commented 10 years ago

Add general crawler

huzhx commented 10 years ago

我今晚会试着做一个。

huzhx commented 10 years ago
我目前卡在了SgmlLinkExtractor上。
我的理解是需要在allow中定义出需要链接的url,并且可以通过正则对url的形式做一个概括。例如,从http://www.reddit.com/r/leagueoflegends到http://www.reddit.com/r/leagueoflegends/?count=25&after=t3_2113kl,再到http://www.reddit.com/r/leagueoflegends/?count=100&after=t3_210ahj。我下的正则式是allow=(r'http:\/\/www\.reddit\.com\/r\/leagueoflegends\/\?count=\d+&after=\w*_\w+',),但link没有跟进。我把amp;去掉后,link还是没有跟进。
我查了一下,感觉应该在process_value上做些文章。于是我又定义了一个my_process_value方程,不过还是没有效果。 方程如下:

def my_processvalue(value): m = re.search(r'http:\/\/www.reddit.com\/r\/leagueoflegends\/\?count=\d+&after=\w*\w+',value) if m: return m.group()

huzhx commented 10 years ago

我通过设置CLOSESPIDER_PAGECOUNT=4000录了一下wikia上的链接(包括relativeURLs)。发现有两个问题: 1)在这4000个链接中有很多都是信息量很小的网页,而且顺序很乱;若直接爬文字内容的话,可能会做很多无用功,所以我在考虑我们是不是需要weight链接?例如,先下载1万个了链接,然后把链接排序,把相对重要的链接放到前面。之后读取存下来的链接表,让Crawler先爬相对重要的。至于如何排序链接,我在想是不是可以依据长度,因为感觉上一般短的链接都是比较重要的。 2)Scrapy设置的Redirect的次数是20。我感觉这个数有点大,导致离seed页有点远,所以我觉得应该把它设小一点。目前我设置了6,但感觉效果还是一般。也许是因为4000页对wikia来说太少了。