2012-05-30 4 views
1

Scrapy을 사용하여 웹 사이트를 크롤링하고 있습니다. 크롤링해야하는 링크는 http://www.somesite.com/details.html?pageId=<some_integer_id>입니다. some_integer_id의 값은 1에서 100 (정확히 100이 아님)까지 확장됩니다. 내가 할 것은 이것이다 :Scrapy + 요청 매개 변수의 변경

def __init__(self): 
    self.start_urls = self.generateURLs() 
이 같은 Scrapystart_urls의 값을 설정

def generateURLs(self): 
    url_list = [] 
    for i in range(1, 101): 
     url_list.append('http://www.somesite.com/details.html?pageId=%d' % i) 
    return url_list 

이 기능을 구석 구석 :

1.I는 URL 목록을 생성하는 함수를 작성

Scrapy을 사용하는 것이 권장되는 방법입니까, 아니면 요청 매개 변수의 값을 변경해야 할 때 더 좋은 방법이 있습니까?

감사합니다.

+1

AFAIK, 이것이 유일한 방법입니다. Scrapy의 BaseSpider는 크롤링 할 URL을 찾기 위해'start_urls'를 필요로합니다. 이것은 당신이 정말로 이것을 좋아하지 않는다는 것을 의미합니다. 당신은 (start_requests()를 호출 할 수 있습니다 (http://doc.scrapy.org/ko/latest/topics/spiders.html#scrapy.spider.BaseSpider.start_requests) '함수를 호출하여 요청을 생성합니다. – Mayli

답변

7

이 방법은 훌륭하게 들리지만 "황금색"방법은 없습니다.

그러나, 고려 Scrapy 같은 start_requests의 재정을 위해 당신이 선택할 수 start_requests를 호출

def start_requests(self): 
    for i in range(1, 101): 
     yield Request(url='http://www.somesite.com/details.html?pageId={0}'.format(i), callback=self.my_callback) 

미치는 영향은 적은 코드와 동일합니다.