我在for loop
中使用两个条件语句编写了一个python脚本,以检查某个网页中是否有下一个页面网址。如果链接可用,则脚本应该打印该链接。但是,如果没有此类链接,则应执行else
块并打印此行No link is there
。
当我运行我的下面的脚本时,它只在可用时打印链接(在if
块内),但是当没有这样的链接时,它永远不会执行else
块并退出(否)还有错误)。
顺便说一句,我希望保留for loop
并让我的脚本在else
块内打印语句。我怎么能这样做?
这是剧本:
import requests
from bs4 import BeautifulSoup
keyword = ["coffee","uranium"] #the keyword uranium when gets passed to the function it is supposed to execute the else block
url = "https://www.yelp.com/search?find_desc={}&find_loc=San+Francisco"
def check_link(link,query):
res = requests.get(link.format(query))
soup = BeautifulSoup(res.text,"lxml")
for link in soup.select(".pagination-links .next"):
if link:
print(link.get("href"))
else:
print("No link is there")
if __name__ == '__main__':
for item in keyword:
check_link(url,item)
答案 0 :(得分:2)
如果选择器不匹配,soup.select()
将返回一个空列表。没有什么可以循环,所以你永远不会到if
。它不会返回包含任何None
元素的列表。
您应该测试它返回的列表的长度:
links = soup.select(".pagination-links .next")
if links:
for link in links:
print(link.get("href"))
else:
print("No link is there")