-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()
私は個々にそれぞれの関数を呼び出すのですか? main()newresponse()monitorchange() – D0USMOKEHAZE
申し訳ありません - スクロールしませんでした。昨日少し遅れたかもしれない。とにかく:たぶんそれは期待どおりに動作しないあなたの減算の順序ですか? set(l1)-set(l2)はset(l2)-set(l1)と同じではありません。ドキュメントから: "[ - ]セット内の要素が他の要素にない新しいセットを返します。" – maschu