후에 내가 여기에 문제는 도메인이 나는, amazonaws.com
을 허용 한 것입니다콜백 함수 재
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from sandbox.items import SandboxItem
class SandboxCrawlSpider(CrawlSpider):
name = 'sandbox_crawl'
allowed_domains = ['amazonaws.com']
start_urls = ['http://www.amazonaws.com/']
rules = (
Rule(SgmlLinkExtractor(), callback=('parse_item'), follow=True),
)
def parse_item(self, response):
sel = Selector(response)
i = SandboxItem()
print response.url
return i
follows-로 내가 만든 최소한의 크롤러가이 aws.amazon.com
로 리디렉션합니다.
리디렉션 후에 크롤러는 페이지를 크롤링하지만 콜백 기능을 호출하지 않습니다. 출력은 parse_item가 '.'print response.url 호출되지 아무런 영향을 결코 알 수 있듯이
2014-03-05 15:50:56+0530 [sandbox_crawl] DEBUG: Redirecting (301) to <GET http://aws.amazon.com> from <GET http://www.amazonaws.com/>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Crawled (200) <GET http://aws.amazon.com> (referer: None)
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'aws.amazon.com': <GET http://aws.amazon.com/>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'portal.aws.amazon.com': <GET https://portal.aws.amazon.com/gp/aws/developer/registration/index.html>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'console.aws.amazon.com': <GET https://console.aws.amazon.com/>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'www.youtube.com': <GET http://www.youtube.com/embed/mZ5H8sn_2ZI?autoplay=1&hd=1&rel=0>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'youtube.com': <GET http://youtube.com/embed/jOhbTAU4OPI?autoplay=1&hd=1&rel=0>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'www.powerof60.com': <GET http://www.powerof60.com/?00N500000026nJd=BA_AWSHP_IntelAWS_Generic&sc_icampaign=ha_en_intel_power_of_60_ed&sc_icampaigntype=partners&sc_ichannel=ha&sc_icountry=us&sc_ipage=homepage&sc_iplace=editorial_r3_right_banner&utm_campaign=BA_AWSHP_IntelAWS&utm_content=GenericAWS&utm_medium=banner&utm_source=AWSHP>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'aws.typepad.com': <GET http://aws.typepad.com/>
2014-03-05 15:50:58+0530 [sandbox_crawl] DEBUG: Filtered offsite request to 'phx.corporate-ir.net': <GET http://phx.corporate-ir.net/phoenix.zhtml?c=176060&p=irol-InfoReq>
2014-03-05 15:50:58+0530 [sandbox_crawl] INFO: Closing spider (finished)
같은 것입니다 아니하며 기능에 다른 문을 수행합니다. 스파이더에 오류가 있습니까?
예. 그것은 선택 사항입니다. 그러나 'gmail.com'및 'amazonaws.com'과 같은 도메인을 포함하는 URL 목록이 제공되는 경우 크롤러가 직접 개입하지 않고 리디렉션 된 URL도 자동으로 구문 분석하도록하고 싶습니다. 이것은 정적 인 경우입니다. 내 프로그램에서는 파일에서 허용 된 도메인 목록을 읽었습니다. – Airmine
[OffsiteMiddleware] (http://doc.scrapy.org/en/latest/topics/spider-middleware.html#scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware)를 비활성화하십시오. – warvariuc