2016-08-08 3 views
0

Scrapy를 사용하여 데이터를 찾아보고 수집하지만 스파이더가 원치 않는 많은 페이지를 크롤링하고 있음을 알았습니다. 거미가 선호하는 것은 정의 된 페이지 집합에서 시작하여 해당 페이지의 내용을 구문 분석 한 다음 끝내는 것입니다. 나는 아래와 같은 규칙을 구현하려고 시도했지만 여전히 다른 일련의 전체 페이지를 크롤링하고 있습니다. 이것에 접근하는 방법에 대한 제안?치료 - 목표 지정 URL 만

rules = (
    Rule(SgmlLinkExtractor(), callback='parse_adlinks', follow=False), 
) 

고마워요!

답변

0

추출기는 규칙 인수가 설정되지 않았기 때문에 모든 링크를 추출하고 있습니다.

official documentation을 살펴보면, 여러분은 여러분의 linkextractor가 추출한 것을 사용자 정의하기 위해 설정할 수있는 많은 매개 변수를 가지고 있음을 알게 될 것입니다.

예 :

rules = (
    # only specific domain links 
    Rule(LxmlLinkExtractor(allow_domains=['scrapy.org', 'blog.scrapy.org']), <..>), 
    # only links that match specific regex 
    Rule(LxmlLinkExtractor(allow='.+?/page\d+.html)', <..>), 
    # don't crawl speicific file extensions 
    Rule(LxmlLinkExtractor(deny_extensions=['.pdf','.html'], <..>), 
) 

당신이 떨어져 어딘가 궁금하지 않으려면 당신은 또한 거미에 허용 도메인을 설정할 수 있습니다

class MySpider(scrapy.Spider): 
    allowed_domains = ['scrapy.org'] 
    # will only crawl pages from this domain^
+0

이 자리 덕분입니다! 결국 규칙을 올바로 작동 시키려면 명시 적 허용 및 거부 조합을 사용했습니다. 당신의 도움을 주셔서 감사합니다. – Mike77