2012-08-28 12 views
1

현재 스크랩을 사용하여 파이썬으로 간단한 크롤러를 만들려고합니다. 내가하고 싶은 것은 링크 목록을 읽고 링크 된 웹 사이트의 html을 저장하는 것입니다. 현재 모든 URL을 가져올 수 있지만 페이지를 다운로드하는 방법을 알 수 없습니다. 이 크롤러가 생산하게됩니다scrapy로 간단한 파이썬 크롤러 만들기

for site in sites: 
    ... 
    items.append(item) 
    items.append(Request(item['link']), callback=self.parse) 

: 당신의 parse 방법에서

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from tutorial.items import BookItem 

# Book scrappy spider 

class DmozSpider(BaseSpider): 
    name = "book" 
    allowed_domains = ["learnpythonthehardway.org"] 
    start_urls = [ 
     "http://www.learnpythonthehardway.org/book/", 
    ] 

    def parse(self, response): 
     filename = response.url.split("/")[-2] 
     file = open(filename,'wb') 
     file.write(response.body) 
     file.close() 

     hxs = HtmlXPathSelector(response) 
     sites = hxs.select('//ul/li') 
     items = [] 
     for site in sites: 
      item = BookItem() 
      item['title'] = site.select('a/text()').extract() 
      item['link'] = site.select('a/@href').extract() 
      items.append(item) 
     return items 

답변

1

다운로드를 실행하는 데 반환 항목 목록에 Request 개체를 반환, 다음은 지금까지 내 거미에 대한 코드입니다 각 링크에 대해 BookItem뿐 아니라 각 책의 페이지를 반복하여 다운로드하십시오. 물론 하위 페이지를 다르게 구문 분석하려는 경우 다른 콜백 (예 : self.parsebook)을 지정할 수 있습니다.