如何用BeautifulSoup提取同名class的第一个链接?
下面给你几种直接取第一个目标链接的写法,避开循环输出所有结果的问题:
方法1:使用find()方法
find()会直接返回第一个匹配的元素,找不到则返回None,建议先判断元素存在再取值,避免报错:
soup = BeautifulSoup(msg.html, 'html.parser') first_link = soup.find('a', class_='mcnButton', href=True) if first_link: print(first_link['href'])
方法2:使用select_one()方法
用CSS选择器语法,select_one()同样返回第一个匹配的元素:
soup = BeautifulSoup(msg.html, 'html.parser') first_link = soup.select_one('a.mcnButton[href]') if first_link: print(first_link['href'])
方法3:直接取索引
你之前尝试的索引操作应该是语法有误,正确写法是把搜索结果当作列表取第0位,同样要先检查列表非空:
soup = BeautifulSoup(msg.html, 'html.parser') links = soup('a', class_='mcnButton', href=True) if links: print(links[0]['href'])
你之前出现语法错误,大概率是没做非空判断就直接取值,或是方法参数写错(比如class是Python关键字,必须用class_)。上面三种方法都能精准拿到第一个链接,任选其一即可。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

