2016-08-18 2 views
0

Это может быть странный вопрос, возможно, поэтому я еще не нашел ответа на него.Python - Получить уникальные изменения сайта

Я вхожу в Python и поставил себя на проект, мне нужна помощь с чем-то.

Мне нужен способ получить уникальные изменения в веб-сайте.

Я хочу, чтобы он работал на разных сайтах, просто введя URL-адрес (получил эту работу и все).

Итак, чтобы проиллюстрировать это.

Предположим, у меня есть большой сайт, но я сделаю простую иллюстрацию. Оригинальный HTML может выглядеть следующим образом:

<html> 
    <body> 
      <nav> 
       <a>Home</a> 
       <a>About</a> 
      </nav> 

      <section> 
       Search! 
      </section> 
    </body> 
</html> 

Но, например, если мы искали что-то (если страница была как: search.php д =), я хотел бы получить изменения, и только изменение на веб-сайте.

Так позволяет сказать, что я искал яблоки и страницы (все та же страница, как описано выше), это дает нам следующее:

<html> 
    <body> 
      <nav> 
       <a>Home</a> 
       <a>About</a> 
      </nav> 

      <section> 
       You searched for apples! 
      </section> 
    </body> 
</html> 

Тогда я хотел бы только получить это уникальное изменение в веб-сайте, как строка «Вы искали яблоки!». Простого удаления HTML его тегов будет недостаточно, тогда (например, в примере) мы получим слово «Главная» и «О».

Это было бы намного проще, если бы я просто хотел это для определенного сайта, а затем использовать что-то вроде beautifulsoup, но, как сказано, я хочу, чтобы это работало на разных сайтах.

Я знаю, что это возможно, так как я видел это раньше. Спасибо за любую помощь! Много значит!

+0

Зачем вам это нужно? Независимо от того, что вы, похоже, в основном хотите diff. –

ответ

0

Простейший способ для многих имо, хотя его субъективный и уверен, что вы получите много ответов, - это @Pardraic Cunningham. Используйте разницу, python поставляется с difflib. Вы можете загрузить текст из URL и сравнить предыдущие версии с новой версией, что-то вроде этого:

import urllib2 
import difflib 
file1 = "myFile1.txt" 
urllib.urlretrieve("http://www.example.com/test.html", "test.txt") 
file2= "test.text" 
diff = difflib.ndiff(file1.readlines(), file2.readlines()) 

Это может или не может быть идеальным, но, кажется, хорошее место, чтобы начать исследование.

+0

Во-первых, если я попробую это, он говорит, что str не имеет атрибутов readlines. Я также попытался просто дать ему нормальные строки, но потом он дает мне что-то вроде: Который я ищу, почему именно (кажется, просто возвращает объект, а не значение) – mikkel1156