吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1455|回复: 4
上一主题 下一主题
收起左侧

[求助] 爬虫初学爬微博页面遇难

[复制链接]
跳转到指定楼层
楼主
BSCEO 发表于 2022-5-25 18:48 回帖奖励
想要爬取微博的某个帖子的评论区,网页源码是会随着下拉不断的变化的,而且虽然在变化,但是却不是那种加载多出来,而是在原代码上变化的。
还有个疑惑就是为什么用requests库爬它的页面代码会有一些看不懂的乱码符号,      // óû§éí·Y′æÔú£¬3¢êÔ»Ö¸′óû§éí·Y¡£类似这种,有大佬解答吗?

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=gb2312"/>
    <title>Sina Visitor System</title>
</head>
<body>
<span id="message"></span>
<script type="text/javascript" src="/js/visitor/mini_original.js?v=20161116"></script>
<script type="text/javascript">
    window.use_fp = "1" == "1"; // ê&#199;·&#241;2é&#188;ˉéè±&#184;&#214;&#184;&#206;&#198;&#161;£
    var url = url || {};
    (function () {
        this.l = function (u, c) {
            try {
                var s = document.createElement("script");
                s.type = "text/javascript";
                s[document.all ? "onreadystatechange" : "onload"] = function () {

                    if (document.all && this.readyState != "loaded" && this.readyState != "complete") {
                        return
                    }
                    this[document.all ? "onreadystatechange" : "onload"] = null;
                    this.parentNode.removeChild(this);
                    if (c) {
                        c()
                    }
                };
                s.src = u;
                document.getElementsByTagName("head")[0].appendChild(s)
            } catch (e) {
            }
        };
    }).call(url);

    // á÷3ìè&#235;&#191;ú&#161;£
    wload(function () {

        try {

            var need_restore = "1" == "1"; // ê&#199;·&#241;×&#223;&#187;&#214;&#184;′éí·Yá÷3ì&#161;£

            // è&#231;1&#251;Dèòa×&#223;&#187;&#214;&#184;′éí·Yá÷3ì£&#172;3¢ê&#212;′ó cookie &#187;&#241;è&#161;ó&#195;&#187;§éí·Y&#161;£
            if (!need_restore || !Store.CookieHelper.get("SRF")) {

                // è&#244;&#187;&#241;è&#161;꧰ü×&#223;′′&#189;¨·&#195;&#191;íá÷3ì&#161;£
                // á÷3ì&#214;′DDê±&#188;&#228;1y3¤£¨3&#172;1y 3s£&#169;£&#172;&#212;òè&#207;&#206;a3&#246;′í&#161;£
                var error_timeout = window.setTimeout("error_back()", 5000);

                tid.get(function (tid, where, confidence) {
                    // è&#161;&#214;&#184;&#206;&#198;&#203;3à&#251;íê3é£&#172;&#199;&#229;3y3&#246;′í timeout &#161;£
                    window.clearTimeout(error_timeout);
                    incarnate(tid, where, confidence);
                });
            } else {
                // ó&#195;&#187;§éí·Y′&#230;&#212;ú£&#172;3¢ê&#212;&#187;&#214;&#184;′ó&#195;&#187;§éí·Y&#161;£
                restore();
            }
        } catch (e) {
            // 3&#246;′í&#161;£
            error_back();
        }
    });

    // &#161;°·μ&#187;&#216;&#161;± &#187;&#216;μ÷oˉêy&#161;£
    var return_back = function (response) {

        if (response["retcode"] == 20000000) {
            back();
        } else {
            // 3&#246;′í&#161;£
            error_back(response["msg"]);
        }
    };

    // ì&#248;×a&#187;&#216;3&#245;ê&#188;μ&#216;&#214;·&#161;£
    var back = function() {

        var url = "https://weibo.com/1878335471/LuCF3n3IL";
        if (url != "none") {
            window.location.href = url;
        }
    };

    // &#191;&#231;óò1&#227;2¥&#161;£
    var cross_domain = function (response) {

        var from = "weibo";
        var entry = "miniblog";
        if (response["retcode"] == 20000000) {

            var crossdomain_host = "login.sina.com.cn";
            if (crossdomain_host != "none") {

                var cross_domain_intr = window.location.protocol + "//" + crossdomain_host + "/visitor/visitor?a=crossdomain&cb=return_back&s=" +
                        encodeURIComponent(response["data"]["sub"]) + "&sp=" + encodeURIComponent(response["data"]["subp"]) + "&from=" + from + "&_rand=" + Math.random() + "&entry=" + entry;
                url.l(cross_domain_intr);
            } else {

                back();
            }
        } else {

            // 3&#246;′í&#161;£
            error_back(response["msg"]);
        }
    };

    // &#206;aó&#195;&#187;§&#184;3óè·&#195;&#191;íéí·Y &#161;£
    var incarnate = function (tid, where, conficence) {

        var gen_conf = "";
        var from = "weibo";
        var incarnate_intr = window.location.protocol + "//" + window.location.host + "/visitor/visitor?a=incarnate&t=" +
                encodeURIComponent(tid) + "&w=" + encodeURIComponent(where) + "&c=" + encodeURIComponent(conficence) +
                "&gc=" + encodeURIComponent(gen_conf) + "&cb=cross_domain&from=" + from + "&_rand=" + Math.random();
        url.l(incarnate_intr);
    };

    // &#187;&#214;&#184;′ó&#195;&#187;§&#182;aê§μ&#196;éí·Y&#161;£
    var restore = function () {

        var from = "weibo";
        var restore_intr = window.location.protocol + "//" + window.location.host +
                "/visitor/visitor?a=restore&cb=restore_back&from=" + from + "&_rand=" + Math.random();

        url.l(restore_intr);
    };

    // &#191;&#231;óò&#187;&#214;&#184;′&#182;aê§μ&#196;éí·Y&#161;£
    var restore_back = function (response) {

        // éí·Y&#187;&#214;&#184;′3é1|×&#223;1&#227;2¥á÷3ì£&#172;·&#241;&#212;ò×&#223;′′&#189;¨·&#195;&#191;íá÷3ì&#161;£
        if (response["retcode"] == 20000000) {

            var url = "https://weibo.com/1878335471/LuCF3n3IL";
            var alt = response["data"]["alt"];
            var savestate = response["data"]["savestate"];
            if (alt != "") {
                requrl = (url == "none") ? "" : "&url=" + encodeURIComponent(url);
                var params = "entry=sso&alt=" + encodeURIComponent(alt) + "&returntype=META" +
                    "&gateway=1&savestate=" + encodeURIComponent(savestate) + requrl;
                window.location.href = "https://login.sina.com.cn/sso/login.php?" + params;
            } else {

                cross_domain(response);
            }
        } else if(response['retcode'] == 50111261 && isInIframe()) {
            //do nothing
        } else {

            tid.get(function (tid, where, confidence) {
                incarnate(tid, where, confidence);
            });
        }
    };

    // 3&#246;′í&#199;é&#191;&#246;·μ&#187;&#216;μ&#199;&#194;&#188;ò3&#161;£
    var error_back = function (msg) {

        var url = "https://weibo.com/1878335471/LuCF3n3IL";
        var clientType = "pc";
        if (url != "none") {

            if (url.indexOf("ssovie4c55=0") === -1) {
                url += (((url.indexOf("?") === -1) ? "?" : "&") + "ssovie4c55=0");
            }
            if (clientType == "mobile") {
                    window.location.href = "https://passport.weibo.cn/signin/login?r="+url;
            } else{
                    window.location.href = "https://weibo.com/login.php";
            }
        } else {

            if(document.getElementById("message")) {
                document.getElementById("message").innerHTML = "Error occurred" + (msg ? (": " + msg) : ".");
            }
        }
    };

    var isInIframe = function () {
        try {
            return window.self !== window.top;
        } catch (e) {
            return true;
        }
    };

</script>
</body>
</html>

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
李玉风我爱你 发表于 2022-5-25 20:10
编码是gb2312  requests解码的时候是否选择正确?
3#
lgsp_Jim 发表于 2022-5-25 20:19
微博有反爬机制,你那个网页源码是微博的警告页面!
4#
GitHubList 发表于 2022-5-26 00:11
有反爬机制的网站,用selenium
虽然效率低,但是简单上手快
5#
 楼主| BSCEO 发表于 2022-5-26 09:15 |楼主
GitHubList 发表于 2022-5-26 00:11
有反爬机制的网站,用selenium
虽然效率低,但是简单上手快

好的好的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表