2014-10-05 2 views
0

Я изучаю код с простым кодом, получая информацию о столбцах из-за проблем с потоком.Python Scrapy allowed_damins Attriute

Я установил allowed_domains = ["http://stackoverflow.com/questions/] с базовым паук. И его метод parse() возвращает только Request с URL-адресом формата. "http://stackoverflow.com/questions/%d/" % no

Я думал, что это сработает ... возможно, у меня есть недоразумение о разрешенном домене. Все запросы, возвращаемые parse(), отображаются фильтром allowed_domain. Он работает только при удалении разрешенного_домена. Не могли бы вы объяснить ..? простите за мой тривиальный вопрос.

class StackOverFlowPost(scrapy.Spider): 
    startNo = 26200877 
    endNo = 26200880 
    curNo = 26200877 
    name = "stackOverFlowPost" 
    start_urls = ["http://stackoverflow.com/questions/%d/" % startNo ] 
    allowed_domains = ["http://stackoverflow.com/questions"] 
    baseUrl = "http://stackoverflow.com/questions/%d/" 

    def parse(self, response): 
     itemObj = items.StackOverFlowItem() 

     # getting items information from the page 
     ... 
     yield itemObj 

     StackOverFlowPost.curNo += 1 
     nextPost = StackOverFlowPost.baseUrl % StackOverFlowPost.curNo 

     yield scrapy.Request(nextPost, callback = self.parse) 

ответ

1

В вы паук, allowed_domains должен быть список domain (не url):

allowed_domains = ["stackoverflow.com"] 

Обратите внимание, что вы можете также установить start_urls со списком url:

start_urls = ["http://stackoverflow.com/questions/%d/" % i for i in range(startNo, endNo+1)] 

Это parse() легко писать.

+0

что такое?? Allowed_domain уже есть список. но, как вы сказали, если я изменю его на '' stackoverflow.com'', он будет работать, я должен удалить '' http "' и '"/question "'? Зачем ? извините, но можете ли вы объяснить больше? – SangminKim

+1

, пожалуйста, прочтите следующее: http://en.wikipedia.org/wiki/Domain_name – kev

+0

извините ..... и спасибо за ваш ответ даже на мой вопрос. – SangminKim