我有用于在网页上找到图形并创建用于从中进行网页爬网的链接的代码。如果未找到图,那么我已经尝试了/例外,以打印带有相应(玩家)链接的消息,因此如果找不到该图,则继续进行下一个。
[来自足球评估网站,我减少了两名球员进行调试:一个是KylianMbappé(页面上有图形并且应该通过),另一个是Ansu Fati(没有)。试图使用BeautifulSoup从他的个人资料中获取Ansu Fati的graph标签会导致NoneType
错误。
这里的问题是,Mbappé的图形链接的确会在代码的下游进行拾取,但是except子句中的“ except”错误/链接消息也会打印到控制台。只有Ansu Fati才是这种情况。
这里是代码
final_url_list = ['https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229','https://www.transfermarkt.com/ansu-fati/profil/spieler/466810']
for i in final_url_list:
try:
int_page = requests.get(i, headers = {'User-Agent':'Mozilla/5.0'}).text
except requests.exceptions.Timeout:
sys.exit(1)
parsed_int_page = BeautifulSoup(int_page,'lxml')
try:
graph_container = parsed_int_page.find('div', class_='large-7 columns small-12 marktwertentwicklung-graph')
graph_a = graph_container.find('a')
graph_link = graph_a.get('href')
final_url_list.append('https://www.transfermarkt.us' + graph_link)
except None:
pass
print("Graph error:" + i)
我尝试使用PyCharm的调试来查看解释器如何执行这些步骤,并且似乎跳过了整个except子句,但是当我在控制台中运行它时,两者都显示了“图形错误:链接”。我不确定尝试这种方式的try / except问题的代码出了什么问题。
行
except None:
正在寻找类型为None
的异常,这是不可能的。
尝试将该行更改为
except AttributeError:
这样做将产生以下输出:
Graph error:https://www.transfermarkt.com/ansu-fati/profil/spieler/466810
Graph error:https://www.transfermarkt.us/kylian-mbappe/marktwertverlauf/spieler/342229