2016-10-12 2 views
-2

Это мои коды, но это кажется правильным, но он не работает, пожалуйста, помогитеКакая ошибка?

HEADER_XPATH = ['//h1[@class="story-body__h1"]//text()']  
AUTHOR_XPATH = ['//span[@class="byline__name"]//text()'] 
PUBDATE_XPATH = ['//div/@data-datetime'] 
WTAGS_XPATH = [''] 
CATEGORY_XPATH = ['//span[@rev="news|source""]//text()']  
TEXT = ['//div[@property="articleBody"]//p//text()'] 
INTERLINKS = ['//div[@class="story-body__link"]//p//a/@href'] 
DATE_FORMAT_STRING = '%Y-%m-%d' 

class BBCSpider(Spider): 
    name = "bbc" 
    allowed_domains = ["bbc.com"] 
    sitemap_urls = [ 
     'http://Www.bbc.com/news/sitemap/', 
     'http://www.bbc.com/news/technology/', 
     'http://www.bbc.com/news/science_and_environment/'] 

    def parse_page(self, response): 
     items = [] 
     item = ContentItems() 
     item['title'] = process_singular_item(self, response, HEADER_XPATH, single=True) 
     item['resource'] = urlparse(response.url).hostname 
     item['author'] = process_array_item(self, response, AUTHOR_XPATH, single=False) 
     item['pubdate'] = process_date_item(self, response, PUBDATE_XPATH, DATE_FORMAT_STRING, single=True) 
     item['tags'] = process_array_item(self, response, TAGS_XPATH, single=False) 
     item['category'] = process_array_item(self, response, CATEGORY_XPATH, single=False) 
     item['article_text'] = process_article_text(self, response, TEXT) 
     item['external_links'] = process_external_links(self, response, INTERLINKS, single=False) 
     item['link'] = response.url 
     items.append(item) 
     return items 
+3

Что проблема? Может быть, объясните, в чем проблема? Ввод? желание выхода? Что ты делаешь? – MooingRawr

+0

проблема в том, что когда я запускаю свои коды, ничего не происходит. Он не просматривает страницы! и я думаю, что мои ошибки в переменных @MooingRawr – nik

ответ

0

Ваш паук просто плохо структурирована и из-за того, что она ничего не делает.
Паука scrapy.Spider требуется атрибут класса start_urls, который должен содержать список URL-адресов, которые паук будет использовать для запуска обхода, все эти URL-адреса обратятся к методу класса parse, что также означает, что это необходимо.

Ваш паук имеет атрибут класса sitemap_urls и он нигде не используется, также у вашего паука есть метод parse_page, который никогда не используется нигде.
Так короче ваш паук должен выглядеть примерно так:

class BBCSpider(Spider): 
    name = "bbc" 
    allowed_domains = ["bbc.com"] 
    start_urls = [ 
     'http://Www.bbc.com/news/sitemap/', 
     'http://www.bbc.com/news/technology/', 
     'http://www.bbc.com/news/science_and_environment/'] 

    def parse(self, response): 
     # This is a page with all of the articles 
     article_urls = # find article urls in the pages 
     for url in article_urls: 
      yield Request(url, self.parse_page) 

    def parse_page(self, response): 
     # This is an article page 
     items = [] 
     item = ContentItems() 
     # populate item 
     return item 
+0

Я очень ценю это – nik

+0

@nik great! Если он разрешил ваш вопрос, не стесняйтесь нажимать кнопку «принять вопрос» слева от него. – Granitosaurus

+0

, конечно, сделаю. Не могли бы вы рассказать мне в articles_urls, что я должен предоставить в качестве примера? (Потому что я имею дело с большим количеством URL-адресов) – nik

 Смежные вопросы

  • Нет связанных вопросов^_^