Python拼接用户输入到URL后网页爬取不到链接问题求助
问题排查与解决
核心问题分析
直接写死matilda能正常爬取,但通过input获取内容后无输出,本质是用户输入的格式不匹配网站URL的要求,常见情况有:
- 输入包含空格(网站URL不允许原生空格,需替换为
-或_) - 输入存在大小写差异(多数字幕站仅支持小写搜索词)
- 输入带有前后多余空格
具体修复方案
1. 标准化用户输入
对输入内容做格式化处理,适配网站的URL规则:
import requests from bs4 import BeautifulSoup find_movie = input('Type name of the movie you want subtitles for: \n') # 格式化输入:去前后空格、空格转连字符、统一小写 formatted_movie = find_movie.strip().replace(' ', '-').lower() subs_url = f'https://indexsubtitle.com/{formatted_movie}' # 打印URL验证是否和手动搜索的一致 print(f"当前访问URL: {subs_url}") # 添加浏览器请求头,避免被网站拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } html_text = requests.get(subs_url, headers=headers).text subs_soup = BeautifulSoup(html_text, 'html.parser') # 过滤空链接,只输出有效href for link in subs_soup.find_all('a'): href = link.get('href') if href: print(href)
2. 验证URL一致性
手动在网站搜索目标电影,复制浏览器地址栏的URL,和代码打印的subs_url对比:
- 如果不一致,说明格式规则需要调整(比如有些网站用
_代替-,或保留特定大小写) - 如果一致但仍无输出,检查网站是否需要登录,或有反爬机制限制
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

