如何从Meta标签抓取指定属性值?CBDC Tracker爬取问题
问题分析与解决方法
你的代码存在以下问题:
- 使用
soup.find_all('meta')会获取页面所有meta标签,自然得到大量无关属性 soup.attrs={"content": "twitter:title"}是错误操作,这是修改soup对象的属性,和提取目标内容无关- 依赖索引
res[6]获取目标标签不稳定,网站结构变化后索引会失效
正确代码实现
要精准提取"Central Bank Digital Currency (CBDC) Tracker",可以通过定位特定属性的meta标签,或者直接提取网页title标签,两种方法如下:
import requests from bs4 import BeautifulSoup URL = "https://cbdctracker.org/" response = requests.get(URL) # 确保编码正确,避免乱码 response.encoding = response.apparent_encoding soup = BeautifulSoup(response.text, "html.parser") # 方法1:提取twitter:title对应的meta标签内容 target_meta = soup.find('meta', property='twitter:title') if target_meta: cbdc_title = target_meta['content'] print(cbdc_title) # 方法2:直接提取网页title标签文本(更简洁) # if soup.title: # cbdc_title = soup.title.string # print(cbdc_title)
代码说明
- 使用
soup.find()配合property='twitter:title'直接定位目标meta标签,避免获取大量无关内容 - 提取标签的
content属性即可得到目标文本 - 额外处理了编码问题,避免出现乱码情况
- 加入判断确保标签存在时再提取,防止报错
内容的提问来源于stack exchange,提问作者Safiyah
相关产品推荐
相关产品推荐

