我需要帮助将for循环转换为while循环,它只会打印/记录差异/更改为xml。
这是我目前的代码。
import requests
from bs4 import BeautifulSoup
url = "https://www.ruvilla.com/media/sitemaps/sitemap.xml"
r = requests.get(url)
soup = BeautifulSoup(r.content)
for url in soup.find_all("url"):
titlenode = url.find("loc")
if titlenode:
title = titlenode.text
loc = url.find("loc").text
lastmod = url.find("lastmod").text
print title + "\n" + lastmod
答案 0 :(得分:1)
对于您当前的用例,for循环效果最佳。但是,如果你真的想进入while循环,你可以这样做:
urls = soup.find_all("url")
counter = 0
while counter < len(urls)-1:
counter += 1
url = urls[counter]
#Your code here
答案 1 :(得分:0)
如果我正确理解了您的问题,那么您只想记录与lastmod
属性关联的网址。对于这种情况,for
循环最好而不是while
,因为它会在到达列表末尾时自动结束迭代。与while循环一样,您必须使用i < len(size)
之类的检查显式处理。您可以考虑以下内容:
while True:. # Loop infinitely
r = requests.get(url)
soup = BeautifulSoup(r.content)
for url in soup.find_all('url'):
lastmod = url.find("lastmod").text
if not lastmod:
continue
loc = url.find("loc").text
titlenode = url.find("loc")
if titlenode:
title = titlenode.text
time.sleep(1)
try-except
块是为了确保lastmod
如果存在,则打印详细信息。其他只是忽略并转到下一个URL。希望这可以帮助。欢呼声。