【问题标题】:extract data without html tags提取没有html标签的数据
【发布时间】: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


【解决方案1】:

要从 Json 文件中获取文本,您可以使用 beautifulsoup。例如:

import json
from bs4 import BeautifulSoup

json_data = r"""{
      "core_id": "624",
      "country": "Italy",
      "city": "Trieste",
      "guide": "",
      "nid": "297237",
      "title": "<div class=\"td-wrap\"><a href=\"\/universities\/university-trieste\" class=\"uni-link\">University of Trieste<\/a><\/div>",
      "logo": "\/sites\/default\/files\/university-of-trieste_624_small.jpg",
      "score": "",
      "rank_display": "651-700",
      "region": "Europe",
      "stars": "",
      "recm": "0--"
    }"""

json_data = json.loads(json_data)
soup = BeautifulSoup(json_data["title"], "html.parser")

print(soup.get_text(strip=True))

打印:

University of Trieste

【讨论】:

  • 成功了;非常感谢:qsrank['title'] = BeautifulSoup(item['title'], "html.parser").text
猜你喜欢
  • 2015-09-26
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 2019-04-04
  • 2021-10-22
  • 1970-01-01
相关资源
最近更新 更多