2015-08-08 2 views
1

Я пытаюсь изучить scrapy, и в настоящее время я пытаюсь разобрать веб-сайт bbc.scrapy rules generate single link

Я чувствую, что сделал все хорошо, но правила генерируют только одну ссылку. Вот код:

class BBCSpider(CrawlSpider): 
    name = "bbc" 
    allowed_domains = ["http://www.bbc.com"] 
    start_urls = [ 
     "http://www.bbc.com/news/world", 
    ] 

    rules = [ 
     Rule(LinkExtractor(allow=r"http://www.bbc.com/news/world-.*"), 
      callback='parse_item', follow=True) 
    ] 


    def parse_item(self, response): 
     print(response) 

В настоящее время только одно звено (http://www.bbc.com/news/world-middle-east-33833400) генерируется. Я понятия не имею, почему. Регулярное выражение соответствует еще большему количеству ссылок на странице.

Большое спасибо.

ответ

0

Много ссылок, как этот (с относительным URL):

<a href="/news/world-middle-east-33833400" class="title-link"> 
    ... 
</a> 

Проверка на news/world-.* только:

rules = [ 
    Rule(LinkExtractor(allow=r"/news/world-.*"), 
     callback='parse_item', follow=True) 
] 

Кроме того, allowed_domains должен содержать домен:

allowed_domains = ["bbc.com"] 
+0

Все еще не работает. Я попробовал кучу ссылок, чтобы увидеть, совпадает ли регулярное выражение с ними, и это так. –

+0

@WebMatrix все в порядке, обновлено. Сейчас работает для меня. – alecxe

+0

безупречный. работает сейчас. –