【发布时间】:2021-09-17 05:27:12
【问题描述】:
我正在尝试抓取一个大学世界排名网站;但是我无法提取其中一个没有 html 标记的键。
我收到<div class="td-wrap"> <a href="/universities/massachusetts-institute-technology-mit" class="uni-link">Massachusetts Institute of Technology (MIT) </a></div>
我想要:麻省理工学院 (MIT)
这是我解析数据的方式:
def parser_page(json):
if json:
items = json.get('data')
for i in range(len(items)):
item = items[i]
qsrank = {}
if "=" in item['rank_display']:
rk_str = str(item['rank_display']).split('=')[-1]
qsrank['rank_display'] = rk_str
else:
qsrank['rank_display'] = item['rank_display']
qsrank['title'] = item['title']
qsrank['region'] = item['region']
qsrank['score'] = item['score']
yield qsrank
更多信息,这里是键的呈现方式:
https://www.topuniversities.com/sites/default/files/qs-rankings-data/en/3740566.txt?1624879808?v=1625562924528
正如您在上面看到的那样,除了标题之外一切都很好,我正在尝试提取没有标签的数据。
【问题讨论】:
-
我得到:麻省理工学院 (MIT) 我想得到:麻省理工学院 (MIT) -> 你想要得到的东西和你实际得到的东西之间的区别在哪里?
-
对不起;由于某种原因,html 标签没有呈现,所以我编辑了帖子,但它看起来是这样的 '`
-
感谢@flydev 提出的编辑建议
-
关于您的问题,您可以检查
BeautifulSoup来解析您的 HTML 代码,因为它支持损坏的页面(因为代码来自大学;)) - 检查此 answer 关于使用 python 解析 HTML . -
谢谢,我马上查一下
标签: python html json web-scraping