allow
매개 변수의 정규식이나 process_value
매개 변수의 테스트 함수를 사용할 수 있습니다. (docs을 참조하십시오.)
두 가지 모두 장단점이 있으므로 페이지의 링크 모양이 다릅니다. 정규식을 사용하는 경우 정규화 된 URL (예 : http://domain.com/foo/bar)을 테스트합니다. process_value
매개 변수를 사용하면 웹 페이지에있는 원시 값 (즉,/foo/bar 또는 그보다 더 나쁜 상대 링크)이 표시됩니다.
예를 들어, 정규식을 사용하면 process_value
갈 경우,이 같은 기능은 위의
def filter_path(value):
# at least 2, at most 3 /'s
if 1 < value.count('/') < 4:
return value
기능을 작동 할
domain.com/foo/bar
domain.com/foo/bar/foo
domain.com/foo/bar/foo/bar
하지만
domain.com/foo/
domain.com/foo/bar/foo/bar/foo
일치 domain.com/(?:\w+/){1,3}\w+$
귀하의 html 링크가과 같은 href 값을 가지고 있다고 가정합니다., /foo/bar/foo
, 특정 경우 등
, 정규식은 domain.com/static/(?:\w+/){3}otherstuff
같은 것, 그리고 filter_path
기능은 value.startswith('/static/')
와 접미사를 확인할 수 있습니다. 당신이 CrawlSpider
에 Rule
클래스를 사용하는 경우
세 번째 옵션이 있습니다. process_links
매개 변수를 사용하면 링크 목록을 처리하는 함수를 전달할 수 있습니다. 예를 들어
내 담당자와 업보트 할 수는 없지만 놀라운 점은 대안을 찾아 주셔서 감사합니다. 나는 실제로이 과정을 재판으로 배우기 위해 사용하고 있으므로 대안을 통해 나에게 1 톤을 가르쳤습니다. 나는 특히'process_links'와'url_allowed' 매개 변수를 시험해보고 싶습니다! – Xodarap777