2017-11-29 4 views
-1

リストold_urlsとnew_urlsの違いについて返された値がないと確信しています。このスクリプトは、差分が差分を追加してその差を返すまで、常にポーリングすることになっています。次に、def newresponse()に戻ります。リストの違いを返す

from bs4 import BeautifulSoup 
import requests 
import time 
old_urls = [] 
new_urls = [] 


def main(): 
    s = requests.session() 
    url = s.get('https://www.sivasdescalzo.com/sitemaps/en/sitemap-1.xml') 
    soup = BeautifulSoup(url.content, "html.parser") 
    all_urls = soup.find_all("url") 
    for url in all_urls: 
    old_urls.append(url.find('loc').get_text()) 
def newresponse(): 
    s = requests.session() 
    url = s.get('https://www.sivasdescalzo.com/sitemaps/en/sitemap-1.xml') 
    soup2 = BeautifulSoup(url.content, "html.parser") 
    all_newurls = soup2.find_all("url") 
    for urls in all_newurls: 
    new_urls.append(urls.find('loc').get_text()) 

def monitorchange(): 
    x = list(set(new_urls) - set(old_urls)) 
    print "looking for change" 
    while True: 
    s =requests.session() 
    url = s.get('https://www.sivasdescalzo.com/sitemaps/en/sitemap-1.xml') 
    soup3 = BeautifulSoup(url.content, "html.parser") 
    if new_urls != old_urls: 
     return x 
     old_urls.append(x) 
     continue 
    elif url.status_code==403: 
     print "bannned" 
    else: 
     time.sleep(60) 

main() 
newresponse() 
monitorchange() 

答えて

0

defでは、関数を定義していますが、関数を呼び出すことはありません。あなたのmain()とnewresponse()関数は呼び出されません。結果として、あなたの古いリストと新しいリストは空のままになり、違いは見られません。

+0

私は個々にそれぞれの関数を呼び出すのですか? main()newresponse()monitorchange() – D0USMOKEHAZE

+0

申し訳ありません - スクロールしませんでした。昨日少し遅れたかもしれない。とにかく:たぶんそれは期待どおりに動作しないあなたの減算の順序ですか? set(l1)-set(l2)はset(l2)-set(l1)と同じではありません。ドキュメントから: "[ - ]セット内の要素が他の要素にない新しいセットを返します。" – maschu

関連する問題