如何使用cheerio获取html标记的指定内容?

时间:2018-10-03 06:39:39

标签: web-scraping postman cheerio

我需要获取会话ID 才能测试网站。 我使用的工具是邮递员。 开发人员会不时更改请求标签的位置,并定期按编号查找它。

收到的文件:

<html>
    <head>
    ...
    <script type="text/javascript">...</script>
    ...
    <script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'B_SM','SERVER_TZ_OFFSET':'10800','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1538547122','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','sessid':'2a91e49f2131db830399ae14da8a5f1c'});</script>
    <script type="text/javascript">...</script>
    </head>
    ...
</html>

标记内容没有变化,因此我使用了以下解决方案:

var a=cheerio.load(pm.response.text());
var b=a('script').eq(5).text();
var c=b.indexOf("sid");
var d=b.indexOf("}");
Postman.setEnvironmentVariable('sid',b.substr(c,d-c));

然后有些事情变了,订单号浮动了,我需要检查选中的 script 标签是否包含sessid,监督程序应该检查下一个。 目前,我需要打印每个 script 标签的内容才能在其中找到 sessid ,但是循环不起作用:

a('script').each(function (i, e) {
        console.log(a('script').eq(i).text());

我也尝试过:

a('script').each(function (i, e) {
        console.log(i,a(this).text());
    });

0 个答案:

没有答案