如何使用select()根据title属性查找href?
解决BeautifulSoup根据title属性查找元素href的问题
你的代码存在语法和调用方式错误,以下是正确的实现方案,满足你根据指定title值(比如Italy)获取对应页面href的需求:
方法一:使用CSS选择器精确匹配title属性
if status_code_finish == 200: # 精确匹配title属性等于finish的所有元素 target_elements = soup_finish.select(f'[title="{finish}"]') # 提取这些元素的href属性 list_of_hrefs = [elem.get('href') for elem in target_elements]
方法二:使用find_all的attrs参数匹配
if status_code_finish == 200: # 通过attrs字典精确匹配title属性 target_elements = soup_finish.find_all(attrs={'title': finish}) list_of_hrefs = [elem.get('href') for elem in target_elements]
补充:模糊匹配title属性
如果需要匹配title属性包含指定内容的元素,可做如下修改:
- CSS选择器方式:把选择器改为
[title*="{finish}"] - attrs参数方式:导入
re模块,使用正则匹配:
import re target_elements = soup_finish.find_all(attrs={'title': re.compile(finish)})
原代码的问题点说明:
soup_finish.find(f'title*="{finish}"]')语法错误,CSS选择器格式不对,且多了多余的],转义符"也没必要使用soup.finish.find是错误的调用方式,BeautifulSoup没有这种链式属性调用方法,必须通过find/select/find_all等方法指定查找条件
内容的提问来源于stack exchange,提问作者makim
相关产品推荐
相关产品推荐

