문제

나는 sgmllinkextractor를 작동 시키려고 노력하고 있습니다.

이것은 서명입니다.

SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)

나는 단지 사용 중입니다 allow=()

그래서 나는 들어갑니다

rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

따라서 초기 URL은입니다 'http://www.whitecase.com/jacevedo/' 그리고 나는 들어가고있다 allow=('/aadler',) 그리고 그것을 기대합니다'/aadler/' 또한 스캔됩니다. 그러나 대신 거미는 초기 URL을 스캔 한 다음 닫습니다.

[wcase] INFO: Domain opened
[wcase] DEBUG: Crawled </jacevedo/> (referer: <None>)
[wcase] INFO: Passed NuItem(school=[u'JD, ', u'Columbia Law School, Harlan Fiske Stone Scholar, Parker School Recognition of Achievement in International and Foreign Law, ', u'2005'])
[wcase] INFO: Closing domain (finished)

여기서 내가 뭘 잘못하고 있니?

이 거미를 끝내는 데 도움을 줄 수있는 사람이 성공적으로 사용 된 사람이 있습니까?

도움을 주셔서 감사합니다.

아래에 거미 코드를 포함합니다.

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['xxxxxx/jacevedo/']

    rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        item = NuItem()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()

참고 : 따라서 1 개 이상의 URL을 게시 할 수 없으므로 초기 URL을 필요에 따라 대체하십시오. 미안합니다.

도움이 되었습니까?

해결책

당신은 그것이 나타나는 "Parse"메소드를 무시하고 있습니다. "Parse"는 Crawlspider의 개인 방법으로 링크를 따르는 데 사용됩니다.

다른 팁

문서를 확인하면 "경고"명확하게 작성되었습니다

"크롤링 스파이더 규칙을 작성할 때, 크롤링 스파이더는 구문 분석 방법 자체를 사용하여 논리를 구현하기 때문에 구문 분석을 콜백으로 사용하지 마십시오. 따라서 구문 분석 방법을 무시하면 크롤링 거미가 더 이상 작동하지 않습니다."

확인을위한 URL

allow = (r '/aadler/', ...

"규칙"이 튜플이되기위한 첫 번째 요소 후에 쉼표가 누락되었습니다 ..

rules = (Rule(SgmlLinkExtractor(allow=('/careers/n.\w+', )), callback='parse', follow=True),)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top