如何根据现有 URL 从 HTML 元素中抓取数据?

问题描述 投票:0回答:1

我有一个将RSS数据保存到电子表格中的脚本,但它仍然有缺点和问题。

我收到了以下形式的数据 标题、时间、文章链接。

我希望脚本能够根据每个文章链接中的标签或 HTML 类检索描述,这样我得到的数据是 标题、时间、描述和文章链接

例如,我想从文章链接中检索名为 entry-content 的 div 类的 description https://e-ficiencia.com/samsung-climate-solutions-acudira-cyr-2023/

我希望电子表格上得到的数据是这样的 https://docs.google.com/spreadsheets/d/1lPn7xHEEI1NknN8l9w6hu4SkQburm8s-NdAjPsPc-NM/edit#gid=0

遵循我的 Google Apps 脚本

function myFunction() {
  getURLData();
}

function getURLData() {
 
  var currentData = [];
  var urltoCheck = ["https://e-ficiencia.com/feed/", "https://www.climanoticias.com/feed/all","https://www.proinstalaciones.com/actualidad/noticias?format=feed"];
  for (var i = 0; i < urltoCheck.length; i++){
  var ficiencaData = UrlFetchApp.fetch(urltoCheck[i]);
  var xml = ficiencaData.getContentText()
  let response = XmlService.parse(xml);
  var root = response.getRootElement();
   let channel = root.getChild('channel');
  let items = channel.getChildren('item');
    items.forEach(item => {
      let title = item.getChild('title').getText();
      let pubDateb = item.getChild('pubDate').getText();
      let link = item.getChild('link').getText();
      currentData.push([title,pubDateb,link])
   
  });
}
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName("Sheet1");
  var currentDataRange = sheet.getRange(sheet.getLastRow() + 1, 1, currentData.length, currentData[0].length);
  currentDataRange.setValues(currentData); 
  
}```

google-apps-script google-sheets web-scraping rss rss-reader
1个回答
0
投票

根据现有 URL 从 HTML 元素中抓取数据涉及几个步骤。

从 HTML 元素中抓取数据的算法:

  1. 获取 HTML 内容:

    • 使用库或工具(例如Python的requests库)向URL发送HTTP GET请求。
    • 从响应中检索 HTML 内容。
  2. 解析 HTML:

    • 使用 HTML 解析库(例如 Python 中的 BeautifulSoup)来解析 HTML 内容。
    • 创建表示 HTML 结构的解析树。
  3. 找到所需的元素:

    • 识别包含您要抓取的数据的 HTML 元素(例如,特定或

      标签)。

    • 您可以通过检查页面的 HTML 源代码或使用解析库的功能根据属性(例如类名或 ID)搜索特定元素来实现此目的。
  4. 从元素中提取数据:

    • 找到所需的 HTML 元素后,使用解析库提取该元素中的内容。
    • 这可能涉及使用
      getText()
      等方法来获取文本内容或访问图像 URL 的
      src
      等特定属性。
  5. 数据处理:

    • 根据需要处理和清理提取的数据。这可能涉及删除不需要的字符、空格或格式。
  6. 存储或使用数据:

    • 将抓取的数据存储在数据结构中,例如变量或数据文件,以供进一步使用或分析。
  7. 处理错误:

    • 实施错误处理以解决潜在问题,例如失败的 HTTP 请求、缺少元素或网站结构的更改。例如,您可以使用 try-catch 块来优雅地处理异常。
  8. 必要时重复:

    • 如果您需要从同一页面或多个页面的多个元素中抓取数据,请考虑使用循环或递归来重复抓取过程。
  9. 尊重网站政策:

    • 确保您的抓取活动符合网站的服务条款和法律规定。有些网站可能对网页抓取有限制。
  10. 测试和验证:

    • 在不同的网页上测试您的抓取代码,以确保其可靠运行并正确提取您需要的数据。
© www.soinside.com 2019 - 2024. All rights reserved.