如何仅用正则表达式通过Python爬取IMDB网站250条评分链接并保存为txt文件
问题解答
你说的思路没问题,re.findall就是这个场景下最适配的方法,不需要依赖DOM解析库,直接匹配页面中符合规则的链接即可完成需求。
匹配逻辑说明:IMDB Top250页面内的单部影片链接统一格式为
/title/tt<数字ID>/,直接匹配该格式的字符串就能拿到全部250条目标链接,不需要额外解析页面结构。
完整实现代码
import re from urllib.request import urlopen import numpy as np url = 'https://www.imdb.com/chart/top' # 请求页面并获取utf-8编码的HTML文本 html_content = urlopen(url).read().decode('utf-8') # 正则匹配所有符合格式的影片链接 url_pattern = r'/title/tt\d+/' all_urls = re.findall(url_pattern, html_content) # 校验提取数量 print(f"合计提取到{len(all_urls)}条影片链接") # 和你之前的实现逻辑保持一致,用numpy保存为txt data = np.array(all_urls) np.savetxt('urls.txt', data, fmt='%s', encoding='utf-8')
可选优化项
- 若不需要依赖numpy,可直接用Python原生方法写文件,更轻量化:
# 原生写文件替代numpy方案 with open('urls.txt', 'w', encoding='utf-8') as f: for single_url in all_urls: f.write(single_url + '\n')
- 若需要提取可直接访问的完整域名链接,可将正则修改为
r'https://www.imdb.com/title/tt\d+/',匹配结果直接带完整前缀。 - 若直接请求被网站拦截,可给urlopen添加User-Agent请求头,伪装成浏览器访问即可。
- 若需要严格保持和页面展示的排序一致,不需要加去重逻辑,官方页面内符合该格式的链接刚好为250条,无重复内容。
内容的提问来源于stack exchange,提问作者user16835025
相关产品推荐
相关产品推荐

