2016-03-24 8 views
2

Ich habe zwei Python-Skripte:
Skript 1: Überprüft Elemente auf einer Webseite und schreibt sie in eine Datei.
Skript 2: Liest aus dieser Datei und verwendet den Inhalt als Argument für eine if-Anweisung.
Dies ist der Teil, über den ich mir nicht sicher bin.Check Textdatei für Argumente Python

Die Textdatei enthält mindestens 500 Elemente in neuen Zeilen, und ich möchte überprüfen, ob diese Elemente noch vorhanden sind, wenn ich die Website erneut besuche.

def read_input_file(self): 
    inFile = open("page_items.txt","r") 
    if inFile == current_content: 
     do.stuff 

Was wäre der beste Weg, um dies zu realisieren?

Antwort

2

Verwenden Sie das erste Skript, um die Site erneut zu scrappen und in einem Set zu speichern. Verwenden Sie dann .issubset, um zu überprüfen, ob alles in 'inFile' in der aktuellen Seite enthalten ist?

+0

ich vorher noch nie von „Sets“ gehört, aber es klingt wie es ist genau das, was ich brauche, Vielen Dank! – jorvd

+0

Sie sind die Python-Darstellung des mathematischen Konzepts, Sie könnten das Lesen von https://en.wikipedia.org/wiki/Set_(mathematics) in Erwägung ziehen, um eine bessere Vorstellung davon zu bekommen, womit Sie es zu tun haben. –

0

Es stellte sich heraus, dass die Sets nicht wirklich das waren, wonach ich suchte. Vor allem, weil der Inhalt abgeschabt werden musste, um einen Neustart zu überleben. Also war die Textdatei die einzige Option, die mir einfiel.

Ich habe jedoch eine Lösung gefunden, anstatt die current_site zu scrappen und diese mit der Infile abzugleichen, beginne ich nun mit der Infile und suche nach dieser Linie auf der current_site, mit Selenium.

Hier ist, was ich kam mit, es ist nicht sehr sauber, aber vielleicht ist es sinnvoll, jemand aus der Zukunft

import linecache    

for i in range(0, 200): 
     scraped_content = linecache.getline('scraped.txt', count) 
     scraped_content = str(scraped_content).rstrip() 
     search_path = "//*[contains(text(),'",scraped_content,"')]" 
     joined_string = "".join(str(x) for x in search_path) 

     scroll_down = driver.find_element_by_tag_name('a') 
     scroll_down.send_keys(Keys.PAGE_DOWN) 
     scroll_to_element = None 
     while not scroll_to_element: 
      try: 
       scroll_to_element = driver.find_element_by_xpath(joined_string) 
       time.sleep(1) 
      except NoSuchElementException: 
       print "Searching for Content:", scraped_content 
       break 

     if scroll_to_element != None: 
      try: 
       print scraped_content,"Found!"