Задать вопрос
@naruto_hokagi

Как в scrapy осуществить переход на след страницу?

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

class GuardianSpider(CrawlSpider):
	name = 'guardian'
	allowed_domains = ['theguardian.com']
	start_urls = ['https://www.theguardian.com/world/europe-news']

	rules = (
		Rule(LinkExtractor(restrict_xpaths=("//div[@class='u-cf index-page']",),
							allow=('https://www.theguardian.com/\w+/\d+/\w+/\d+/\w+',)),
		callback = 'parser_items'),
		Rule(LinkExtractor(restrict_xpaths=("//div[@class='u-cf index-page']",),
							allow=('https://www.theguardian.com/\w+/\w+?page=\d+',)),
		follow = True),
		)
  • Вопрос задан
  • 934 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Verz1Lka
Web scraping expert
Вообще, я бы использовал `BaseSpider` а не `CrawlSpider` и вручную прописал бы xpaths для next_page и news.
Что-то типа такого:
def parse(self, response):
    news_css = 'div.fc-item__container > a::attr(href)'
    for news_link in response.css(news_css).extract():
        req = scrapy.Request(response.follow(url=news_link, callback=self.parser_items)
        yield req

    next_page_css = 'div.pagination__list > a::attr(href)'
    for nextpage_link in response.css(news_css).extract():
        req = scrapy.Request(response.follow(url=nextpage_link, callback=self.parse)
        yield req


P.S. Код не тестировал, но я думаю, смысл понятен. Обычно, с такими пауками проще работать чем с BroadCrawl
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
19 февр. 2025, в 21:51
50000 руб./за проект
19 февр. 2025, в 21:33
150000 руб./за проект
19 февр. 2025, в 21:08
30000 руб./за проект