@nekolov

Python(scrapy) все ли верно делаю?

Вечер добрый,
Пытаюсь распарсить данную страницу vulners.com в качестве параметра передаю CVE(например:vulners.com/cve/CVE-2017-0147), дальше на данной странице пытаюсь получить все содержимое DIV контейнера "vulners-card-text", с python и с scrapy я столкнулся первый раз, по примерам в сети собрал данный скрипт:
#!/usr/bin/python
import scrapy
from scrapy.crawler import CrawlerProcess

"""EX:CVE-2017-0147"""
class PythonEventsSpider(scrapy.Spider):
    name = 'pythoneventsspider'
    start_urls = ['https://vulners.com/cve/'+sys.argv[1], ] 

    events_dict = {}
    def parse(self, response):
        i = 0
        for events in response.xpath('//div[contains(@class, "vulners-item-full")]'):

            event_type = events.xpath('.//div[contains(@class, "vulners-item-description")]').extract_first()
            event_title = events.xpath('.//div[contains(@class, "vulners-item-cpe")]').extract_first()
            event_desc = events.xpath('.//div[contains(@class, "vulners-item-references")]').extract_first()
            events_dict[i] = [event_type, event_title, event_desc]
            i += 1

if __name__ == "__main__":
    process = CrawlerProcess({'LOG_LEVEL': 'ERROR'})
    process.crawl(PythonEventsSpider)
    spider = next(iter(process.crawlers)).spider
    process.start()


Но при запуске (./pars.py CVE-2017-0147) вижу:

Traceback (most recent call last):
File "./pars.py", line 6, in
class PythonEventsSpider(scrapy.Spider):
File "./pars.py", line 8, in PythonEventsSpider
start_urls = ['https://vulners.com/cve/'+sys.argv[1], ]
NameError: name 'sys' is not defined


Цель: В результате хочу получить html файл с содержимым контейнера ...
  • Вопрос задан
  • 296 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Добавить
import sys
где-то в начале
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы