首页 > 解决方案 > python速记表达式中的语法错误

问题描述

我正在使用bs4来抓取一个网站我有这样的表达: links = ['https://example.com/' + link['href'] for link in school.findAll('a')]

我需要的是添加另一个条件,如果link只有href而不是附加链接。这是正常的代码。

if link.has_attr('href'):
    //append'

我试过这个但没有成功

links = ['https://example.com/' + link['href'] if link.has_attr('href') for link in school.findAll('a')]

标签: pythonpython-3.xbeautifulsoup

解决方案


有两种可能的方式:

1.

如果标签具有 href 属性,这将返回所有链接标签。

findAll('a',href=True)

2.

见列表理解

['https://example.com/' + link['href'] for link in school.findAll('a') if link.has_attr('href')] 

如果您使用的是 bs4,最好使用find_all()方法findAll()


推荐阅读