2017-11-17 6 views
0

여기에 20 개 시작 URL이 있습니다 내 거미Scrapy 만 긁힌 자국 최초의 4 개 시작하는 URL을

class Spider(scrapy.Spider): 
    name = "spider" 
    start_urls = [] 
    with open("clause/clauses.txt") as f: 
     for line in f: 
      start_urls(line) 
    base_url = "<url>" 
    start_urls = [base_url + "-".join(url.split()) for url in start_url] 

    def start_requests(self): 
     self.log("start_urls - {}".format(self.start_urls)) 
     for url in self.start_urls: 
      yield scrapy.Request(url, dont_filter=True, priority=2, callback=self.parse) 

    def parse(self, response): 
     text_items = response.css("some css").extract() 

     for text in text_items: 
      if text == "\n": 
       continue 
      yield Item({"text" : text}) 

     yield response.follow(response.css("a::attr(href)").extract_first(), callback=self.parse) 

이다, 그러나 필자는 첫 번째 4 개 URL이 실제로 호출되고 있으며 나머지는 지금까지 실행되지 않습니다 알았어. 이상적인 행동은 처음에는 20 개의 시작 URL을 모두 호출 한 다음 각각의 URL에서 다음 순서로 계속 호출하는 것입니다.

start_urls = [base_url + "-".join(url.split()) for url in start_url] 

아마해야합니다 : 다음 start_urlss 누락

start_urls = [base_url + "-".join(url.split()) for url in start_urls] 

공지 사항 당신이 오타를 가지고있는 것처럼

+0

거기를? clauses.txt 파일을 제공해 주시겠습니까? –

+0

@XetRAFHan 예외 메시지가 없습니다. 절 파일에는 단어 목록이 있으며 기본 URL에 추가됩니다. 처음 4 개 요청 후에 다른 초기 요청을 처리하지 않습니다. – TheM00s3

+0

'self.log ("start_urls - {}"형식 (self.start_urls))의 결과는 무엇입니까? – Umair

답변

0

보인다.

그리고 나는이 의심 :

with open("clause/clauses.txt") as f: 
    for line in f: 
     start_urls(line) 

가 있어야한다 : 콘솔에서 예외 메시지가

with open("clause/clauses.txt") as f: 
    for line in f: 
     start_urls.append(line)