如何使用BeautifulSoup从爬取结果中获取第一个链接
获取解析结果中第一个链接的实现方法
不需要遍历所有a标签打印后再从输出内容里反向提取,直接在解析环节就能拿到目标值,两种常用实现方式如下:
- 方式一:直接从解析结果中取第一个a标签(推荐,效率最高)
soup.find_all('a')返回的是存储所有匹配a标签的列表,列表索引从0开始,直接取索引为0的元素,再读取它的href属性即可,不需要做全量遍历。
完整可运行代码:
from bs4 import BeautifulSoup import requests url = "https://www.tutorialspoint.com/index.htm" req = requests.get(url) soup = BeautifulSoup(req.text, "html.parser") # 提取所有a标签组成的列表 all_links = soup.find_all('a') # 先判断列表非空,避免页面无a标签时触发索引报错 if all_links: first_link = all_links[0].get('href') print(first_link)
运行后会直接输出第一个链接https://www.tutorialspoint.com/index.htm。
- 方式二:从已生成的输出文本中提取第一个链接
如果你已经拿到了包含多个链接的输出文本,不想重新发起请求解析页面,可以用正则匹配抓取文本里第一个符合URL格式的内容:
import re # 存储已有的输出文本 output_content = """https://www.tutorialspoint.com/index.htm https://www.tutorialspoint.com/codingground.htm https://www.tutorialspoint.com/about/about_careers.htm""" # 匹配第一个以http/https开头的连续非空字符串(即第一个链接) first_link_match = re.search(r'https?://\S+', output_content) if first_link_match: print(first_link_match.group())
两种方式都能准确拿到目标第一个链接,优先用第一种方式,少做多余的遍历和文本处理,运行效率更高。
内容的提问来源于stack exchange,提问作者masroor_rajput
相关产品推荐
相关产品推荐

