【发布时间】:2019-11-11 01:48:49
【问题描述】:
我正在向网站发出 http 请求并解析其内容以查找一些属性值。我需要知道的是,如果代码返回 []、None 或什么都不返回,我该如何处理异常。
我尝试过的:
import requests
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter
from bs4 import BeautifulSoup
def get_url():
s = requests.Session()
retries = Retry(total=5,
backoff_factor=10
status_forcelist=[ 500, 502, 503, 504 ])
s.mount('http://', HTTPAdapter(max_retries=retries))
r = s.get('http://httpstat.us/500')
def find_data():
soup = BeautifulSoup(r.text, "lxml")
try:
id = soup.find('a', class_="class").get('id')
except:
print('id not found')
get_url()
基本上如果id 找不到我想再次发出该GET 请求并尝试找到它。
【问题讨论】:
-
您可能正在寻找
for或while循环。一般来说,如果你再次尝试get,它不会返回任何不同的东西,所以请注意,如果你把它放入一个循环中,你最终可能会陷入无限循环。 -
@SumnerEvans 同意,OP 显然只是在寻找一种方法来处理其代码中缺失的元素。
-
另外,这是完整的代码吗?
r来自哪里?请参阅:minimal reproducible example。
标签: python beautifulsoup