2014-04-04 2 views
0

Scrapy를 사용하여 고정 된 도메인의 사이트를 크롤링하고 스크랩합니다. 고정 정규 표현식과 일치하는 사이트로 크롤링하고 나머지는 무시합니다. 이 코드는 완벽하게 작동하지만 최소한 1000 페이지 중 10-15 페이지 만 반환합니다. 코드는 다음과 같습니다.모든 링크를 크롤링하지 않는 치료

name = "xyz" 
allowed_domains = ["xyz.com"] 
start_urls = ["http://www.xyz.com"] 
rules = (Rule(SgmlLinkExtractor(allow=[r'\/V-\d{7}\/[\w\S]+']),callback='parse_item'),) 



def parse_item(self, response): 
sel = Selector(response) 

title = sel.xpath("//h1[@class='no-bd']/text()").extract() 
print title 

누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

답변

0

코드가 문제는 아니지만 크롤링하는 사이트에 일정 기간 동안 특정 IP에서 처리 할 요청 수가 너무 많은 것으로 제한되어 있다고 생각합니다. 그 사이에 어떤 sleep(2) 호출을 구현하여 어떤 차이가 있는지 확인할 수 있습니다.

0

콜백을 제공하는 경우 Scrapy는 구문 분석 기능에서 Request 개의 개체 목록을 반환한다고 가정합니다. 링크를 따를 것이라면 follow=True을 규칙에 추가하십시오.

또한 사용자가 지정한 정규식과 일치하는 링크 만 따라옵니다. 당신은 전체 사이트를 크롤링하고 정규 표현식에 일치하는 링크 만 분석하려는 경우에 따라 다른 규칙을 추가 모든 :

rules = (Rule(SgmlLinkExtractor(allow=[r'\/V-\d{7}\/[\w\S]+']), 
       callback='parse_item'), 
       follow=True), 
     Rule(SgmlLinkExtractor()), 
     ) 
난 단지 일주일 동안 Scrapy을 사용하고

, 그래서 수도 틀리다 ...

관련 문제