дозу скрапа не считают скрапом. Запросить в другом классе - PullRequest
0 голосов
/ 26 сентября 2019

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

, поэтому в соответствии с этим подходом у меня есть основной класс для сканирования следующим образом:

class SiteSpider(scrapy.Spider):
     def __init__(self):
        self.parser = Parser()

    name = "somesite"
    start_urls = ['https://www.somesite.com']

    def start_requests(self):
        urls = ['https://www.somesite.com']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parser.parse)

, что self.parser.parse похожеэто:


class Parser():

    def parse(self, response):
        print ("from Parser class => ", response.url)
        headLinExt = HeadLine()
        headLinExt.parse(response)

        comment_parser = CommentParser()
        comment_parser.scrap(response)

, а CommentParser выглядит следующим образом:

import scrapy

class CommentParser:

    def scrap(self, response):
        print("from CommentParser.scrap =>", response.url)
        for i in range(5):       
            yield scrapy.Request(url="https://www.somesite.com/comments/", callback=self.parse_comment)

    def parse_comment(self,response):
        print("from CommentParser.parse => ", response.url)
        yield dict(response_url = response.url)

моя проблема в CommentParser. Я хочу отправить запрос и проанализировать его ответ, но в CommentParser скрасс-доза не отправляет запрос иparse_comment никогда не вызывайте.

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

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