Вывод из python crawler - PullRequest
       11

Вывод из python crawler

0 голосов
/ 10 октября 2019

У меня есть Python Web, использующий Scrapy Framework. Я пытаюсь получить выходные данные в двух отдельных файлах: 1) данные веб-сайта (т. Е. Веб-сайт 1 ссылается на веб-сайт 2) и 2) ключевые слова, которые соответствуют моему списку ключевых слов, которые ищет сканер. У меня возникли проблемы при получении выходных данных. Работа - мне удалось получить вывод для (1) без включения компонента ключевого слова, и я вижу, что веб-сканер работает - веб-сайты и соответствующие ключевые слова перечислены в командной строке cmd. Но я не могу их сохранить как отдельные файлы CSV.

    def check_buzzwords(self, response):

        self.__class__.crawl_count += 1

        crawl_count = self.__class__.crawl_count

        wordlist = [
            "Keyword1",
            "Keyword2"
            ]

        url = response.url
        contenttype = response.headers.get("content-type", "").decode('utf-8').lower()
        data = response.body.decode('utf-8')

        for word in wordlist:
                substrings = find_all_substrings(data, word)
                for pos in substrings:
                        ok = False
                        if not ok:
                                self.__class__.words_found += 1
                                print(word + ";" + url + ";")
        return Item()

А для запуска паука - это команда, которую я использую.

scrapy crawl examplespider -o examplesemanticlevel1.csv

Возможно ли иметь два отдельных выходных файла из этой модели? А если нет, есть идеи, как объединить 2 файла, которые мне нужны, в 1?

The exact output that I need is as follows:
CSV File 1: 
starting website | Target website
website1       | website2
Website1       | Website2
Website2       | website3

CSV File 2: 
Keyword  | Webpage
Keyword1 | Webpage1
Keyword2 | Webpage1
Keyword2 | Webpage2
Keyword3 | Webpage3

Я нашел какой-то код в Интернете, но я не уверен, как его встроить. Будет ли что-то подобное использоваться?

 def spider_closed(self):
        with open("outputfile.csv","w", newline="") as f:
            writer = csv.DictWriter(f,['Name','Year'])
            writer.writeheader()
            for data in self.itemlist:
                writer.writerow(data)
 def linkage_output_file (self, response):
        df = pandas.read_csv('websitesemanticlevel2.csv',
                             url = 'URL',
                             word = 'Keyword',
                             header=0,
                             names=['url','keyword'])
        df.to_csv('websitesemanticlevel2.csv')

1 Ответ

0 голосов
/ 10 октября 2019

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

https://realpython.com/python-csv/ Это довольно легко,дайте мне знать, если у вас возникли проблемы

...