使用Beautiful Soup解析Medium平台文章发布日期的问题求助
用BeautifulSoup解析Medium归档页文章发布日期方案
失败原因说明
Medium归档页的发布日期字段没有和标题、作者、阅读时长字段放在同级容器的直接子元素中,通常嵌套在文章卡片元数据区域的<time>标签里,之前提取失败大概率是选择器没有匹配到正确的层级或标签类型。
实现代码
import requests from bs4 import BeautifulSoup # 必须添加User-Agent请求头,否则Medium会拦截请求返回403 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } url = "https://medium.com/interlay/archive/2020" response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") # 定位所有文章卡片节点 article_cards = soup.find_all("div", class_="streamItem streamItem--postPreview js-streamItem") publish_dates = [] for card in article_cards: # 提取time标签内的文本,直接对应你需要的月份+日期+年份格式 date_tag = card.find("time") if date_tag: publish_dates.append(date_tag.get_text(strip=True)) # 按要求用分号拼接结果 result = " ; ".join(publish_dates) print(result)
输出示例
运行代码后会得到符合要求的格式:Jun 18, 2020 ; Mar 5, 2020 ; Feb 23, 2020
注意事项
- 如果需要对日期做后续处理,可以提取
<time>标签的datetime属性,得到ISO标准格式的日期字符串,方便后续转格式、排序等操作 - 本示例的2020年归档页所有内容都包含在静态HTML中,无需处理动态加载;如果是需要滚动加载的页面,可搭配selenium模拟浏览器加载后再提取
内容的提问来源于stack exchange,提问作者johnt
相关产品推荐
相关产品推荐

