使用BeautifulSoup爬取链接时无法获取对应文件名问题咨询

实现方案
你已经通过find_all拿到所有a标签的前提下,分两类情况提取文件名即可:
- 文件名直接包含在链接
href路径中
不要手写字符串切分逻辑,直接用Python标准库urllib.parse解析URL,自动过滤掉查询参数、锚点的干扰,提取路径末尾段就是目标文件名,示例代码:
如果拿到的from bs4 import BeautifulSoup from urllib.parse import urlparse # 替换成你实际的页面文本、解析器配置 soup = BeautifulSoup(page_html, "html.parser") link_list = soup.find_all("a") for link in link_list: href = link.get("href") if not href: continue # 解析得到纯路径部分,自动剔除?参数、#锚点 url_path = urlparse(href).path # 取路径最后一段即为文件名 file_name = url_path.rstrip("/").split("/")[-1] print(file_name)href是相对路径,先拼接成站点完整绝对路径再做解析,避免路径解析错误。 - 文件名存在于链接跳转后的目标页面中
这类场景你需要遍历所有爬取到的链接,逐个发起请求拿到目标页的源码,再用BeautifulSoup定位到文件名所在的DOM节点提取即可。请求时建议加上合理的间隔时间,避免触发站点的反爬机制。
内容的提问来源于stack exchange,提问作者John Chae
相关产品推荐
相关产品推荐

