2011-03-23 8 views
0

Y를 긁어 내려고! 그룹과 나는 한 페이지에서 데이터를 얻을 수 있지만 그게 전부입니다. 나는 몇 가지 기본 규칙을 가지고 있지만 분명히 옳지 않다. 누구든지 이걸 이미 해결 했어?치료 야후 그룹 거미

class YgroupSpider(CrawlSpider): 
name = "yahoo.com" 
allowed_domains = ["launch.groups.yahoo.com"] 
start_urls = [ 
    "http://launch.groups.yahoo.com/group/random_public_ygroup/post" 
] 

rules = (
    Rule(SgmlLinkExtractor(allow=('message','messages'), deny=('mygroups',))), 
    Rule(SgmlLinkExtractor(), callback='parse_item'), 
) 


def parse_item(self, response): 
    hxs = HtmlXPathSelector(response) 
    sites = hxs.select('/html') 
    item = Item() 
    for site in sites: 
     item = YgroupItem() 
     item['title'] = site.select('//title').extract() 
     item['pubDate'] = site.select('//abbr[@class="updated"]/text()').extract() 
     item['desc'] = site.select("//div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]/text()").extract() 
    return item 

답변

0

당신이하는 일을 거의 알지 못하는 것처럼 보입니다. 나는 Scrapy에 익숙하지 않지만 비슷한 것을 갖고 싶다고 생각한다. Rule(SgmlLinkExtractor(allow=('http\://example\.com/message/.*\.aspx',)), callback='parse_item'), 원하는 전체 링크 URL과 일치하는 정규식을 작성한다. 또한 하나의 규칙 만 필요로하는 것처럼 보입니다. 첫 번째 콜백을 추가하십시오. 링크 추출기는 allow의 정규 표현식과 일치하는 모든 링크를 일치시키고 deny에 의해 일치하는 링크는 제외하고 나머지 페이지는 각각로드되어 parse_item으로 전달됩니다.

저는 데이터 마이닝 페이지와 원하는 데이터의 성격에 대해 전혀 모른다고 말하고 있습니다. 원하는 데이터가있는 페이지에 대한 링크가있는 페이지에 대해 이러한 종류의 거미가 필요합니다.

+0

참 고맙습니다. 아마 내가 말했듯이, 나는 groupname/message/1, groupname/message/2 (/ post의 별칭이 필요하다.) id = averylongidstringthatcouldbeanythingthing not justamessage1or2 – linkingarts