• XSS.stack #1 – первый литературный журнал от юзеров форума

Помогите разобраться с python скриптом с github

xmenusa

(L3) cache
Пользователь
Регистрация
04.05.2020
Сообщения
172
Реакции
12
Суть нашел скрипт на гите - вроде как работает разобрался как запустить...
сам скрипт...
Запустил его на сервер все работало и потом подвисло на одном сайте ...
Место на диске сервера есть! Ресурсов достаточно! Сеть перезапускал....
Не могу понять куда копать, как понять почему он стопарнулся?

Скрин
screen.jpg
 

Вложения

  • screen.jpg
    screen.jpg
    90 КБ · Просмотры: 13
Заметил с другого запроса, он стопарится на одной сайт и все тут...
Вот думаю как добавить проверку что бы если такой сайт попался например 1минут и пропускал его, кто может с подобным кодом помочь?
 
Судя по картинкам эксепшн который ты видишь ты получаешь от retrieve_html(url), когда твой краулер пытается url формата "tel:"
переварить:
Python:
except urllib2.URLError, e:
    logger.error("Exception at url: %s\n%s" % (url, e))

Это происходит скорее всего потому, что вот тут в сет со ссылками попадает url.netloc с этим самым "tel:"

Python:
def find_links_in_html_with_same_hostname(url, html):
    ...
    try:
            link = str(link)
            if link.startswith("/"):
                link_set.add('http://'+url.netloc+link)
            startswith("http") or link.startswith("https"):
                if (link.find(url.netloc)):
                    link_set.add(link)
            elif link.startswith("#"):
                continue
            else:
                link_set.add(urlparse.urljoin(url.geturl(),link))
        except Exception, e:
            pass
            ...

Наверное, можно поправить url_regex, так чтоб отфильтровывать нестандартные схемы или url.netloc на что-то еще заменить/проверять что в этот netloc не попала какя-то херня. Зачем тебе минуту ждать на невалидном урле не ясно, скрипт же вроде и так работу продолжает? Если тебе именно код нужен, попробуй после link = str(link) так что ли if 'tel:' in link: continue или жди минуту :)) за работоспособность идеи не критикуй
 
Походу я нашел очень сырое решение и ковыряться с ним не зная python нет смысла.) Постоянно падает и валит ошибки)))
Прельстило то что дергает ссылки из поисковика по запросам и собирает именно по ключевому слову... Хотя это сбором назвать сложно, еще и мусора кучу навалил... Надо искать другое решение для парсинга.

Но спасибо за ответ.
 
Добавь в функцию на 83 строке
Ruby:
def retrieve_html(url):
    if url.startswith('tel:'):
        return
    ...
или
Ruby:
def retrieve_html(url):
    if not url.startswith('https://'):
        return
   if not url.startswith('http://'):
        return
    ...
 
Походу я нашел очень сырое решение и ковыряться с ним не зная python нет смысла.) Постоянно падает и валит ошибки)))
Да, там очень плохой код. Поищи мб кто-то писал аналоги на scrapy.
 
Да, там очень плохой код. Поищи мб кто-то писал аналоги на scrapy.
Знаешь хочется что то такое найти что бы аналог был именно по конкретно ключу собирал с поиска пофиг какую базу email почистить от не валида это не проблема....
Решение нужно именно такое что бы запустить его на мало мальском сервере - и пускай он там сутками гребет по запросам! Именно повелся на то что он по запросам собирает, затестил криво-косо но работает. Может что порекомендуешь?
А что за scrapy такой)?
 
Знаешь хочется что то такое найти что бы аналог был именно по конкретно ключу собирал с поиска пофиг какую базу email почистить от не валида это не проблема....
Решение нужно именно такое что бы запустить его на мало мальском сервере - и пускай он там сутками гребет по запросам! Именно повелся на то что он по запросам собирает, затестил криво-косо но работает. Может что порекомендуешь?
А что за scrapy такой)?
Нужно что б собирал с гугла? Ты вводишь запрос, получам н количество сайтов далее нужно зайти на каждый и там искать почты? Сформулируй точней что нужно.

scrapy это фреймворк для парсинга данных. Его нужно изучать. Если питон не знаешь то requests + bs4 + lxml этого достаточно для сбора нужных тебе данных (основа парсинга). Данные можно клать в файли или базу. Это уже зависит от твоих предпочтений.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх