再次大家好,python noob在这里。 我正在慢慢推进我的项目,但修复一个错误,导致另一个问题来临。长话短说: 我有
for tempNext in soup3.find_all(title=re.compile("^Next Page -")):
..循环,让我找到一个href值。如果值存在,它的效果很好。如果不是,它会继续重复使用前一次的同一个。遗憾的是,每次将值重置为""
并不简单,因为此for循环也在另一个循环中。
只需获取IDEA,这就是代码片段的外观:
soup3 = make_soup('http://www.automotiveforums.com/vbulletin/' + link)
while tempNumber < 4:
for postScrape in soup3.find_all(id=re.compile("^td_post_")):
post = ""
post += postScrape.get_text(strip=True)
postData += post + "\n"
print(post)
for tempNext in soup3.find_all(title=re.compile("^Next Page -")):
tempNextPage = ""
tempNextPage += (tempNext.get('href'))
print(tempNextPage)
soup3 = ""
soup3 = make_soup('http://www.automotiveforums.com/vbulletin/' + tempNextPage)
tempNumber += 1
tempNumber = 1
number += 1
print(number)
newUrl = "http://www.automotiveforums.com/vbulletin/" + nextPage
soup = make_soup(newUrl)
所以我想知道是否有办法检查for tempNext in soup3.find_all(title=re.compile("^Next Page -")):
值是否为空,如果是空的话,只需设置tempNextPage = ""
但是过去几个小时我无法弄明白
如果我在循环完成后将其设置为空值,则不再刮擦其他页面。
感谢您抽出宝贵时间阅读此问题,我们将不胜感激。
答案 0 :(得分:1)
在tempNextPage
循环之外声明-or reset- for
变量,并将变量重新分配给新值 - 而不是在for
循环中向其附加新值。这样,如果tempNextPage
找不到任何匹配的元素,soup3.find_all()
的值将保持为空,您可以根据tempNextPage
是否为空来采取措施:
while tempNumber < 4:
tempNextPage = ""
for postScrape in soup3.find_all(id=re.compile("^td_post_")):
....
for tempNext in soup3.find_all(title=re.compile("^Next Page -")):
tempNextPage = tempNext.get('href')
print(tempNextPage)
# process tempNextPage only if it is not empty
if not tempNextPage:
soup3 = make_soup('http://www.automotiveforums.com/vbulletin/' + tempNextPage)
....
# do something else otherwise
else :
....