如何使用Python+BeautifulSoup提取维基百科页面创建日期
维基百科info页创建日期提取方案
核心定位逻辑
别做全页文本匹配的无用功,维基百科基于MediaWiki搭建,?action=info页的所有元数据字段都带固定元素id,是程序渲染时自动生成的,不会随页面内容变动,直接锚定对应id就能100%精准定位目标内容,完全不受冗余文本干扰。
页面创建日期对应的固定元素id为mw-pageinfo-firsttime,直接找这个元素就行。
实现步骤
- 发起请求时必须携带合法User-Agent请求头,无UA的请求会被维基百科反爬规则拦截,返回错误页面导致解析失败
- 用BeautifulSoup直接查找id为
mw-pageinfo-firsttime的表格行元素 - 提取该行内第二个
<td>标签内的文本,做简单去空白处理即可得到纯净的页面创建日期
可直接运行的代码示例
import requests from bs4 import BeautifulSoup target_url = "https://en.wikipedia.org/wiki/United_States?action=info" # 配置合法请求头 request_headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" } response = requests.get(target_url, headers=request_headers) response.raise_for_status() # 请求失败时直接抛出异常,避免解析错误页面 soup = BeautifulSoup(response.text, "html.parser") # 精准定位创建日期所在行 page_create_row = soup.find(id="mw-pageinfo-firsttime") # 提取日期值 page_create_date = page_create_row.find_all("td")[1].get_text(strip=True) print(page_create_date) # 运行输出参考:20 January 2001, at 19:27
注意事项
- 别用正则全页扫日期,info页里混着最后编辑时间、缓存生成时间、模板更新时间等一堆时间字段,文本匹配的误判率极高,抓固定id是最稳的方案
- 如果需要结构化时间对象,直接拿提取到的字符串用
python-dateutil的解析方法转成datetime对象就行,不用写复杂正则 - 批量提取时注意控制请求频率,遵守维基百科的爬虫规则,避免对服务器造成不必要的压力
内容的提问来源于stack exchange,提问作者silent_knight
相关产品推荐
相关产品推荐

