Использование правил CrawlSpider в Scrapy - PullRequest
0 голосов
/ 19 сентября 2019

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

class Scraper(CrawlSpider):
    name = "emails"
    lx = LinkExtractor()
    rules = [Rule(link_extractor=lx, follow=True, process_links='processor', callback='landed')]

    def start_requests(self):
        self.inf = DataInterface()
        df = self.inf.searchData()

        row = df.iloc[2]
        print(row)
        #url = 'http://' + row['Website'].lower()
        #self.rules.append()
        url = 'http://example.com/Page.php?ID=7'
        req = scrapy.http.Request(url=url, callback=self.landed,
                                meta={'index': 1, 'depth': 0,
                                    'firstName': row['First Name'],
                                    'lastName': row['Last Name'],
                                    'found': {}, 'title': row['Title']})
        yield req

1 Ответ

1 голос
/ 19 сентября 2019

Попробуйте добавить после вашего кода и изменить ваш обратный вызов на анализ:

def start_requests(self):
    self.inf = DataInterface()
    df = self.inf.searchData()

    row = df.iloc[2]
    print(row)
    #url = 'http://' + row['Website'].lower()
    #self.rules.append()
    url = 'http://example.com/Page.php?ID=7'
    req = scrapy.http.Request(url=url, callback=self.parse,
                            meta={'index': 1, 'depth': 0,
                                'firstName': row['First Name'],
                                'lastName': row['Last Name'],
                                'found': {}, 'title': row['Title']})
    yield req

def parse(self, response):
    print(response.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...