Поэтому я пишу сборщики ссылок, чтобы найти новые ссылки на определенных сайтах для данной группы «начальных ссылок».
В настоящее время я использую Python / Beautiful Soup, чтобы добиться этого с приличным успехом.
У меня есть входной файл [для каждого сайта], из которого я строю список «начальных ссылок».
Я использую urllib2 для загрузки веб-страниц, а затем красивый суп, чтобы найти группу ссылок, которые мне нужно получить, и добавить их в список. На некоторых сайтах ссылки разбиты на множество разных страниц, поэтому мне нужно загрузить их все, чтобы собрать ссылки.
После того, как он собирает все указанные типы ссылок из каждой «начальной ссылки», я затем сравниваю этот список с «ранее собранным» списком, который я загружаю из файла. Затем я возвращаю разницу в другой список, который представляет собой список «новых ссылок», а также добавляю их в «ранее собранный» список ссылок.
Моя проблема в производительности. Я вспоминаю все эти ранее увиденные ссылки каждый раз, когда я перезапускаю программу, а это означает, что я перезагружаю кучу страниц, с которых я не собираюсь получать никаких новых ссылок.
Как правило, сайты добавляют новые ссылки поверх других, поэтому я думаю, что мой следующий шаг может состоять в том, чтобы сравнить ссылку «в данный момент доступно» со списком «ранее собранных» и, если совпадений нет, собрать ссылка до тех пор, пока не будет найдено совпадение, где она затем выпадет для данной «начальной ссылки» и перейдет к следующей, что потенциально сэкономит много загрузок страниц для сайтов, которые разбивают их ссылки.
Имеет ли смысл помогать ускорить получение новых ссылок, которые я планирую запускать каждые несколько дней?
В «ранее собранном» списке могло быть несколько сотен тысяч ссылок, поэтому я не был уверен, как это повлияет на выполнение этого сравнения снова и снова по сравнению с сохранением программы в тупом состоянии и всегда вспоминает все доступные ссылки.
У вас есть лучшее решение для всех вместе? Любой вклад очень ценится.