Перейдите по ссылкам, чтобы закончить в учебниках Scrapy - PullRequest
0 голосов
/ 11 декабря 2018

Не уверен, что это правильное место для того, чтобы задать такой общий вопрос.

Но я не могу найти какие-либо примеры или учебные пособия, использующие Scrapy для очистки сайта, перейдя по ссылкам на конечную страницу.который затем будет содержать информацию о продукте, из которого я хотел бы извлечь информацию для этого продукта.

Итак, я начинаю с главной веб-страницы, где я могу почистить теги для href, но как мне тогда перейти по каждой ссылке, которая приведет меня на другую страницу, которая будет иметь больше ссылок href, которые, если яПоследующее повторение в конечном итоге приведет меня к самой информации о продукте, в которой хранятся данные, которые я хочу извлечь

Это какая-то рекурсия?Извините, но я новичок в этом.Так кто-нибудь знает хороший учебник / пример?Мне немного трудно следовать официальной документации.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете найти пару примеров здесь: https://github.com/scrapy/quotesbot

Также, вот пример для разбора книг по http://books.toscrape.com/:

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):

    name = 'toscrape.com'
    start_urls = ['http://books.toscrape.com/']

    rules = (
        # The links that matches the allow / deny arguments will be processed in parse_book.
        Rule(LinkExtractor(allow=('/catalogue/',), deny=('/category/', '/page')), callback='parse_book'),

        # These links will be processed in the CrawlSpider defaut callback that will look for new links.
        Rule(LinkExtractor(allow=('/page',))),
    )

    def parse_book(self, response):

        yield {
            'title': response.css('div.product_main>h1::text').extract_first(),
            'price': response.css('p.price_color::text').extract_first(),
        }

Когда вы используетеCrawlSpider, как в этом примере, scrapy автоматически извлекает ссылки для вас и выполняет итерацию по каждой из них, пока больше не будет найдено.

0 голосов
/ 11 декабря 2018

Я использовал документацию Scrapy для этого.

Вы можете увидеть мой пример здесь:

https://github.com/dbaleeds/ScrapyQuoteExtractor/blob/master/quotes/spiders/quotesBrainy.py

Это то же самое, что вы пытаетесь сделать, читая ссылки со страницы, затем переходя по ссылкечтение данных со страниц результатов.

def parse(self, response):

Считывает страницу ссылок.

def parse_item(self, response):

Анализирует данные на странице по ссылке, указанной выше.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...