Skip to content
On this page

插件

🕒 Published at:

1.谷歌插件例子

C:\Users\janeAnne\Desktop\chrome-extensions- samples

  • [ ] 合并多个谷歌浏览器窗口
C:\Users\janeAnne\Desktop\chrome-extensions-samples\api-samples\windows
  • [ ] 可以用index.html控制浏览器插件
C:\Users\janeAnne\Desktop\chrome-extensions-samples\api-samples\action
  • [ ] 可以获取网站的图标
C:\Users\janeAnne\Desktop\chrome-extensions-samples\api-samples\favicon
  • [ ] 清除浏览器数据

获取微博热搜榜

js
data=document.querySelectorAll('.m-wrap')[0].innerText
 // 分割数据
var lines = data.split("\n");

// 清理和整理数据
var cleaned_data = [];
for (var i = 0; i < lines.length; i++) {
    var line = lines[i];
    // 使用制表符分割每一行的数据
    var items = line.split("\t");
    if (items.length >= 2) {
        // 提取关键词和序号
        var keyword = items[1].trim();
        var number = items[0].trim();

        // 添加到清理后的数据列表
        cleaned_data.push([number, keyword]);
    }
}

// 排序数据,按照序号升序排列
cleaned_data.sort(function(a, b) {
    return parseInt(a[0]) - parseInt(b[0]);
});
var urlTemplate = "https://s.weibo.com/weibo?q={keyword}&t=31&band_rank=5&Refer=top&page=1";
// 打印整理后的数据
for (var j = 1; j < cleaned_data.length; j++) {
    var item = cleaned_data[j];
    //console.log("序号:" + item[0] + ",关键词:" + item[1]);
    var keywordArray = item[1].split(" ");
    var firstKeyword = keywordArray[0];
     var url = urlTemplate.replace("{keyword}", firstKeyword);
    console.log(url)
}

失败的实现

js
import fetch from 'node-fetch';
import { parse } from 'node-html-parser';

async function getInnerText() {
  try {
    const url = 'https://s.weibo.com/top/summary?cate=realtimehot'; // 替换为目标网站的 URL
    const response = await fetch(url);
    const htmlText = await response.text();
    const root = parse(htmlText);
    const elements = root.querySelectorAll('.m-wrap');

    if (elements.length > 0) {
      elements.forEach(element => {
        const innerText = element.innerText;
        console.log(innerText);
      });
    } else {
      console.log('.m-wrap 元素未找到');
    }
  } catch (error) {
    console.error(error);
  }
}

getInnerText();

成功的可实现

js
import puppeteer from 'puppeteer';

async function getInnerText() {
  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://s.weibo.com/top/summary?cate=realtimehot');

    // 等待异步加载完成,可以根据页面上的某个元素或其他特定条件进行等待
    await page.waitForSelector('.m-wrap');

    const elements = await page.$$('.m-wrap');
    if (elements.length > 0) {
      for (const element of elements) {
        const innerText = await element.evaluate(node => node.innerText);
        console.log(innerText);
      }
    } else {
      console.log('.m-wrap 元素未找到');
    }

    await browser.close();
  } catch (error) {
    console.error(error);
  }
}

getInnerText();