20242216 实验四《Python程序设计》实验报告

20242216 2024-2025-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2422
姓名: 王乐天
学号:20242216
实验教师:王志强
实验日期:2025年5月14日
必修/选修: 公选课

1.实验内容

python综合应用,使用当前已学的知识编写一个具有特定功能的python程序。

2. 实验过程及结果

2.1 编写方向以及理由

在上学期末整理系公众号一年推送的过程中,我发现这一个重复而机械的操作却未能实现自动化。为了减轻重复工作的负担,我想要设计一个爬虫,自动爬取年终总结表格需要的数据。

2.2 设计过程

  • 交互方面
    为了便于使用而不是使用命令行输入,采用tkiter编写一个简单的图形化界面。
root=tk.Tk()
root.title("搜狗微信文章抓取") #上层大标题显示
tk.Label(root,text="公众号名称:").grid(row=0, column=0)#第一个输入框以及位置
account_var=tk.StringVar() 
tk.Entry(root,textvariable=account_var).grid(row=0, column=1) 
tk.Label(root,text="起始日期(YYYY-MM-DD):").grid(row=1, column=0)#第二个输入框
start_var=tk.StringVar()
tk.Entry(root,textvariable=start_var).grid(row=1, column=1)
tk.Label(root,text="结束日期(YYYY-MM-DD):").grid(row=2, column=0) #第三个输入框
end_var=tk.StringVar()
tk.Entry(root,textvariable=end_var).grid(row=2, column=1)
tk.Label(root,text="保存路径:").grid(row=3, column=0) #第四个输入框
save_path_var=tk.StringVar()
tk.Entry(root,textvariable=save_path_var, width=30).grid(row=3, column=1)
tk.Button(root,text="选择路径", command=choose_path).grid(row=3, column=2) #便捷操作,允许根据文件夹选取路径
tk.Button(root,text="开始抓取", command=run).grid(row=4, column=1) #开始进行爬虫
root.mainloop()
  • 爬取并存储进入excel表格
def choose_path():
    path=filedialog.asksaveasfilename(defaultextension=".xlsx",filetypes=[("Excel files", "*.xlsx")])
    save_path_var.set(path) #使用tkinter的方法
def run():
    account=account_var.get()
    start=start_var.get()
    end=end_var.get()
    save_path=save_path_var.get() #取得输入的数据
    try:
        start_date=datetime.datetime.strptime(start,"%Y-%m-%d") #按格式切分获得年月日
        end_date=datetime.datetime.strptime(end,"%Y-%m-%d")
    except:
        messagebox.showerror("错误","请输入正确的日期格式(YYYY-MM-DD)") #异常处理
        return
    if not account or not save_path:
        messagebox.showerror("错误","请输入公众号名称并选择保存路径")
        return
    articles=search_wechat_articles(account,start_date,end_date,save_path) #爬取文章
    if articles:
        df=pd.DataFrame(articles) #使用pandas处理爬取的数据
        df.to_excel(save_path,index=False) #生成excel格式
        wb=openpyxl.load_workbook(save_path) #加载前面路径上的excel表格
        ws=wb.active #激活
        column_widths={ #设置表宽
            'A':40,
            'B':80,
            'C':15
        }
        for col,width in column_widths.items():
            ws.column_dimensions[col].width=width
        wb.save(save_path) #存入表格
        messagebox.showinfo("完成",f"共抓取到{len(articles)}篇文章,已保存到{save_path}") #输出反馈
    else:
        messagebox.showinfo("提示","未抓取到文章,请检查公众号名称或时间范围")
  • 爬虫部分
    这一部分是程序的重点内容,因为微信公众号文章的浏览依赖于微信内嵌的浏览器,反爬机制相对严格,因此这个使用搜狗微信搜索来降低程序复杂度以及避免达成“爬虫从入门到入狱”。
    搜狗微信搜索结果的源代码如下↓


<!doctype html>
<html>
<head>
    <link rel="shortcut icon" href="//www.sogou.com/images/logo/new/favicon.ico?v=4" type="image/x-icon">
    <link href="//dlweb.sogoucdn.com/logo/images/2018/apple-touch-icon.png" id="apple-touch-icon" rel="apple-touch-icon-precomposed"/>
    <link href="//www.sogou.com/sug/css/m3.min.v.7.css" rel="stylesheet" type="text/css">
    <link href="/new/pc/css/weixin-public-20230731.css" rel="stylesheet" type="text/css">
    
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta content="width=device-width,initial-scale=1.0" id="vp" name="viewport">
    <title>CS青漾的相关微信公众号文章 – 搜狗微信搜索</title>
    
    <script>
        var sst = {h_s :(new Date()).getTime()};
        var newpage = 1;
        var passportUserId = "";
        var oldQuery = "CS青漾";
        var gbkQuery = "CS%C7%E0%D1%FA";
        var uuid = "3a46771a-9e26-4f11-8962-0aa71952725c";
        var keywords_string = "CS青漾";
        var sab = "6";
        var keywords = oldQuery.split(' ');
        var now = 1747405137215;
        var idc = "sjs";
        var clientIp = "123.121.157.97";
        var isIpad = false;
        //var article_anti_url = "";
        var  ssToken = "3F09156668EC800C7F794A686289614F7F15EE6568274951";
    </script>
    <script>
        //以下为动态的全局 js,防止外部网站通过 window.opener.location 篡改我们的页面,以后不要通过 window.location 获取当前地址,只能用 document.location
        
    </script>
    <script src="/js/jquery-1.11.0.min.js" charset="gbk"></script>
    <script src="/new/pc/js/https_util.min.js?v=20180607"></script>
    <script src="/js/lib/juicer-min.js"></script>
    <script src="/new/weixin/js/common.min.js?v=20200414"></script>
    <script src="/new/pc/js/common.min.js?v=20180607"></script>
    
    <script>
        var uigs_para = {
            "uigs_t": "1747405137215",
            "uigs_productid": "vs_web",
            "terminal"      : "web",
            "vstype"        : "weixin",
            "pagetype"      : "result",
            "channel"       : "result_article",
            "s_from"        : "input",
            "sourceid"      : "sugg",
            "type"          : "weixin_search_pc",
            "uigs_cookie"   : "SUID,sct",
            "uuid"          : "3a46771a-9e26-4f11-8962-0aa71952725c",
            "query"         : "CS青漾",
            "weixintype"    : "2",
            "exp_status"    : "-1",
            "exp_id_list"   : "0_0",
            "wuid"          : "00923E2072FF93776812143E98477626",
            "snuid"         : "68EC800C7F794A686289614F7F15EE65",
            "rn"            : 1,
            "login"         : passportUserId ? "1" : "0",
            "uphint"        : 0,
            "bottomhint"    : 0,
            "page"          : "1"
        };
        $.get('/approve?uuid=' + window.uigs_para.uuid + '&token=' + "3F09156668EC800C7F794A686289614F7F15EE6568274951" + '&from=search');
    </script>
</head>
<body>
    

<!--start header-->
<div class="header-box">
    
    <div class="login-info">
        <a href="javascript:void(0)" id="cniil_wza" style="text-decoration: none;color: #999;padding-right: 20px;border-right: 1px solid #e7e7e7;line-height: 14px;margin-right: 20px;">无障碍</a>
        <a id="top_login" href="javascript:void(0);" uigs="home_login_top">登录</a>
    </div>

    <div class="header" id="scroll-header">
        <a title="回到搜狗首页" href="/" name="scroll-nav" class="logo" uigs="home"></a>
        <ul class="searchnav" name="scroll-nav">
            <li><a id="sogou_xinwen" href="https://www.sogou.com/sogou?ie=utf8&p=40230447&interation=1728053249&interV=&pid=sogou-wsse-7050094b04fd9aa3&query=CS青漾" onclick="navBar(this,'query=');" uigs="nav_xinwen">资讯</a></li>
            <li><a id="sogou_wangye" href="http://www.sogou.com/web?ie=utf8&query=CS青漾" onclick="navBar(this,'query=');" uigs="nav_wangye">网页</a></li>
            <li class="cur"><a href="javascript:void(0)">微信</a></li>
            <li><a id="sogou_zhihu" href="http://zhihu.sogou.com/zhihu?ie=utf8&p=73351201&query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_zhihu">知乎</a></li>
            <li><a id="sogou_tupian" href="http://pic.sogou.com/pics?ie=utf8&p=40230504&query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_tupian">图片</a></li>
            <li><a id="sogou_shipin" href="https://v.sogou.com/v?ie=utf8&p=40230608&query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_shipin">视频</a></li>
            <li><a id="sogou_mingyi" href="https://www.sogou.com/web?m2web=mingyi.sogou.com&ie=utf8&query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_mingyi">医疗</a></li>
            <li><a id="sogou_hanyu" href="https://hanyu.sogou.com/result?query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_hanyu">汉语</a></li>
            <li><a id="sogou_fanyi" href="https://fanyi.sogou.com/text?ie=utf8&keyword=CS青漾" onclick="navBar(this,'keyword=')" uigs="nav_fanyi">翻译</a></li>
            <li><a id="sogou_wenwen" href="http://wenwen.sogou.com/s/?ch=weixinsearch&w=CS青漾" data-index="http://wenwen.sogou.com/?ch=weixinsearch" onclick="navBar(this,'w=')" uigs="nav_wenwen">问问</a></li>
            <li><a id="sogou_baike" href="https://www.sogou.com/sogou?ie=utf8&insite=baike.sogou.com&pid=sogou-wsse-17737832ac17be52&query=CS青漾" onclick="navBar(this,'query=')" uigs="nav_baike">百科</a></li>
            <li><a id="top_more" href="http://www.sogou.com/docs/more.htm?v=1" target="_blank" uigs="nav_more">更多>></a></li>
        </ul>
        

<form name="searchForm" action="/weixin">
    <div class="querybox">
        <div class="qborder">
            <div class="qborder2">
                <input type="hidden" name="type" value="2"/>
                <input type="hidden" name="s_from" value="input"/>
                <input type="text" class="query" name="query" id="query" ov="CS青漾" value="CS青漾" autocomplete="off"/>
                
                    <input type="hidden" name="ie" value="utf8"/>
                
                <a href="javascript:void(0)" class="qreset2" name="reset" uigs="search_reset"></a>
            </div>
        </div>
        <input type="button" value="搜文章" class="swz" onclick="search(this,2)" uigs="search_article"/>
        <input type="hidden" name="_sug_" value="n"/>
        <input type="hidden" name="_sug_type_" value=""/>
    </div>
</form>
    </div>
</div>
<!--end header-->
    
    <div class="wrapper" id="wrapper">
        <div class="main-left" id="main">
            
<div class="dy-pop2 dy-pop5 float" id="erweima_box" style="display: none"></div>
<script type="text/template" id="erweima_tpl">
    <a href="javascript:void(0)" class="close" data-except="1" uigs="other_float_weixin_close"></a>
    <div class="fxico-box2">微信扫一扫关注<br/><img width="104" height="104" src="${imgsrc}"/></div>
</script>
            

<script>
    //高级工具参数对象
    var toolParas = {
        tsn : '0',
        ft : '',
        et : '',
        interation : '',
        wxid : '',
        usip : ''
    };
    var from_tool = '0';
</script>
<div class="wx-topbox">
    <div class="all-time">
        <div class="all-time-y2 ">
            <div class="all-time-y all-time-y-v1" id="text">
                以下内容来自微信公众平台
            </div>
            
        </div>
    </div>
</div>




<div class="news-box">
    
<ul class="news-list">
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_0" d="ab735a258a90e8e1-6bee54fcbd896b2a-f5cf52b05a18d989ca291a0714f59cd0">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_0" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwDNaaJ11saPC0bHU7LyrHCoa5n_UqenHrWxw5iO08GTfPj2M53gv_HQdDJLAVjCT9xg6yDzSGCiq9eHQne9i9x4Ulomzy0PehTuA1F9ji6HXnELnD9gq9mpFkDr8IT4KYw..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_0"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SOS0xn5ibWYljValvXzibEc4ExuV5ReZZiclj9rt6ZSuZpBcQyZ4KX5OuqAiaPUr4Gu9dfeTKT4gfcfaA%2F0%3Fwx_fmt%3Djpeg&amp;sign=2ff758531f0f4e9cd9a0ceae27f6af51" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwDNaaJ11saPC0bHU7LyrHCoa5n_UqenHrWxw5iO08GTfPj2M53gv_HQdDJLAVjCT9xg6yDzSGCiq9eHQne9i9x4Ulomzy0PehTuA1F9ji6HXnELnD9gq9mpFkDr8IT4KYw..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_0" uigs="article_title_0"><em><!--red_beg-->CS<!--red_end--></em>权益|网空系团学&mdash;&mdash; 做CSers坚实的后盾</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_0">网空系权益小助手的入口可以从&ldquo;<em><!--red_beg-->CS青漾<!--red_end--></em>&rdquo;公众号中直接获取,同学们只需按下图进行操作,即可进行权益反馈:- PART 02 -生活权...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732871578'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_1" d="ab735a258a90e8e1-6bee54fcbd896b2a-b287622e82fd86a61026b76ab738dc49">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_1" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwARmiB9Zwx3mAMVZAhNE3f8qBpKJoddnsyxFqxJCvPJLHePWv3aKyXQ-6lW34rCyCu5FzkDCAG_dQscDojHxmMVQtMfqDkX-ppxSN8B1hjOoyr9K5uzdSrTYl_Q5RRZQjg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_1"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SMxsNpia8gI3UtqSXopR5KcK2ic59wtVwY0Zntjrmo87wiaIzL3ITUNoJ6KsiaLUoJT2jNHvbyRYk0jIQ%2F0%3Fwx_fmt%3Djpeg&amp;sign=d64c40d37a282cac4b84f48dfe5bf525" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwARmiB9Zwx3mAMVZAhNE3f8qBpKJoddnsyxFqxJCvPJLHePWv3aKyXQ-6lW34rCyCu5FzkDCAG_dQscDojHxmMVQtMfqDkX-ppxSN8B1hjOoyr9K5uzdSrTYl_Q5RRZQjg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_1" uigs="article_title_1"><em><!--red_beg-->CS<!--red_end--></em>活动|创意暖心田,风和日景明&mdash;&mdash;&ldquo;创意织'网',天马行'空'&rdquo;第二十六期</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_1">&ldquo;<em><!--red_beg-->CS青漾<!--red_end--></em>&rdquo;公众号后台.期待各位CSer的创意投稿,精美周边等你来拿!文案:洪海洋排版:洪海洋审核:多乐、龙可欣、彭佑</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1744721209'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_2" d="ab735a258a90e8e1-6bee54fcbd896b2a-ab97d171360f1968cecbea4ffab4b765">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_2" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwIAheB3O3g51PbKHmvQvLbeso6R8sewndJw3q8BrQmlRGkrMaVK9DaDeflq2qV1xpCHgXswvK7HOw3JhDCuUSYWC08TDkAEh7F27Cybvuy90J9tEKvl6gYOrCDCayYmfpA..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_2"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SMajBCElP1T0DJZj6794arf2OR0Wg85e4FbdibmAInNSm51GMzQv4jG4lmzabSRqBnib6gura6meZtw%2F0%3Fwx_fmt%3Djpeg&amp;sign=1eaa1f684c9c0004b7f3feb85379588f" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwIAheB3O3g51PbKHmvQvLbeso6R8sewndJw3q8BrQmlRGkrMaVK9DaDeflq2qV1xpCHgXswvK7HOw3JhDCuUSYWC08TDkAEh7F27Cybvuy90J9tEKvl6gYOrCDCayYmfpA..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_2" uigs="article_title_2"><em><!--red_beg-->CS<!--red_end--></em>榜样|咬定青山不放松,不待扬鞭自奋蹄&mdash;&mdash;2122团支部风采展示</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_2">咬定青山不放松不待扬鞭自奋蹄2122团支部风采展示2122团支部同学政治立场坚定,认真学习党的理论知识,具有自信、自律、自立...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732781362'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_3" d="ab735a258a90e8e1-6bee54fcbd896b2a-4aa9fad168785611c2988eae16e89125">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_3" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwAgG-ibIweFFJd5sS_CoJKOmJjW647_8sJgfGsJm0en9vNVd5ZOC5m64dnjtOeRVQRJbKM1ndUnhHk4yutz4VEoSr-v6zoM1ZU_BtnWekU3KZSa4rpblcQle0WC6Sbi7DA..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_3"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fm8wddUDQ2SMQm2AxBcxsVsqaNPlLSa373CSDHdj0Uq93LcY9UYQ8Cn9R1KCibuXIUwMjMgIAzqB97RUAyCQrEgg%2F0%3Fwx_fmt%3Djpeg&amp;sign=2382eb987f8adf5750271bfe65b279be" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwAgG-ibIweFFJd5sS_CoJKOmJjW647_8sJgfGsJm0en9vNVd5ZOC5m64dnjtOeRVQRJbKM1ndUnhHk4yutz4VEoSr-v6zoM1ZU_BtnWekU3KZSa4rpblcQle0WC6Sbi7DA..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_3" uigs="article_title_3"><em><!--red_beg-->CS<!--red_end--></em>投稿|团学工作与调查研究</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_3">开设了&ldquo;<em><!--red_beg-->CS青漾<!--red_end--></em>反馈箱&rdquo;,收集了不少关于团学工作的建议,目前也正在研究将这些有益建议真正落实下去的方法.我们欢迎大家及...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1733387668'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_4" d="ab735a258a90e8e1-6bee54fcbd896b2a-946d789766933dc75c32c5fd7d59a3c1">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_4" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwDh_Uc_IGHZwr_g0sTC09hO_PPvubuWScTzRxQn-opGgvqg34xqlA5v88fttqb-HyV_sK1gy6QoaSZIB_rOxk_HGSR5XEQdbRclmzsn1fRa1J4OGyux5JCd5Nu7CnoSqqg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_4"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SMao3bCyLRf7HcGalmPOBEI2QUfOEpvsE8sscoyLGh5rm5xMy8fW59qmxyfiaCicB9v6wFTZJiboyKEQ%2F0%3Fwx_fmt%3Djpeg&amp;sign=58e0aa4714b0ebdaa6f635cf5112dfaa" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwDh_Uc_IGHZwr_g0sTC09hO_PPvubuWScTzRxQn-opGgvqg34xqlA5v88fttqb-HyV_sK1gy6QoaSZIB_rOxk_HGSR5XEQdbRclmzsn1fRa1J4OGyux5JCd5Nu7CnoSqqg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_4" uigs="article_title_4">叮咚!你收到了一封运动会的邀请函</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_4">现在,请跟着<em><!--red_beg-->CS<!--red_end--></em>小青的镜头,一起欣赏,网空系方阵和运动队员们的训练瞬间吧!方阵训练灿烂的笑容,欢快的律动,队员们衣带飘...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732757053'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_5" d="ab735a258a90e8e1-6bee54fcbd896b2a-4512c870b9728befcfc2e298bb72fcf2">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_5" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwF6mIS02rnL-IYba72lQO-nqiWom-gRPdsKY26TyFftIOFnABrAvJE0fKrgghsE-1M6j6HazJtzHz9scq3jUXG9dOk4zT8XI5nPburtCM27dN5gSlSKxetTvzHZXxeLdyg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_5"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fm8wddUDQ2SNvK3oyuwhSJQ7P6xxM0ksoGDiaPZnf0Jia5FfGc86WlibylPfGptRBZ2ZDOFViaNn8KmMNu3Q4AwkqFA%2F0%3Fwx_fmt%3Djpeg&amp;sign=fb0591ef3b6454dc0b76857c26e079d9" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwF6mIS02rnL-IYba72lQO-nqiWom-gRPdsKY26TyFftIOFnABrAvJE0fKrgghsE-1M6j6HazJtzHz9scq3jUXG9dOk4zT8XI5nPburtCM27dN5gSlSKxetTvzHZXxeLdyg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_5" uigs="article_title_5"><em><!--red_beg-->CS<!--red_end--></em>活动|挑战地心引力,引爆篮球魅力</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_5">输入标题挑战地心引力 引爆篮球魅力输入标题篮球,是少年忙碌生活中的一束光,拂去扰乱思绪的烦恼,投掷青春溢满的球筐,接球,...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732766219'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_6" d="ab735a258a90e8e1-6bee54fcbd896b2a-c4f81cc13540a396f9149225d89b0cbb">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_6" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwGwP11R2Um-sCeBWnRTJZ6zBVRpKPnZRAOsq39gZkuB7ynAPOTCNQYYuzz0FmMBqTuqbUZ_w7lGUgWDKD8y9dxWvpIBboC8jib8xEX1dc9dyq48ahTNOcveE8RsmObDbtQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_6"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fm8wddUDQ2SP034apR3lYe6N4EuQ4KkLjwuYRr91icktGyD46BOYt20bTm7dia6ZuwicTOGCIcF3PPGOIgDHxicDkcQ%2F0%3Fwx_fmt%3Djpeg&amp;sign=b9bbd6092246131f4778f16ebafa5535" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwGwP11R2Um-sCeBWnRTJZ6zBVRpKPnZRAOsq39gZkuB7ynAPOTCNQYYuzz0FmMBqTuqbUZ_w7lGUgWDKD8y9dxWvpIBboC8jib8xEX1dc9dyq48ahTNOcveE8RsmObDbtQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_6" uigs="article_title_6"><em><!--red_beg-->CS<!--red_end--></em>团支部|&ldquo;党的二十大和我的人生路&rdquo;&mdash;&mdash;2024团支部专题学习会</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_6">党的二十大和我的人生路2024团支部专题学习会党的二十大是在我国迈上全面建设社会主义现代化国家新征程、向第二个百年奋斗目标...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732758794'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_7" d="ab735a258a90e8e1-6bee54fcbd896b2a-c81e8f3c733301c88b162b6f87f77ba8">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_7" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwP2GmCOjsL8tuUSqJLG2a62rlarpv_xw2tRdHpkzPK_WBBoE_WRrKEZHKDQn7_OK5aRGTfP4VmRPvWgZF-i__jac-xe98_yijsNCWWDk9jct4G28VovWNbwYJSSFPgfogQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_7"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2Fm8wddUDQ2SNvK3oyuwhSJQ7P6xxM0ksoHKXbjIV7LtrBMIB8210ibyavprSNMibvNJjqSGxM35mzBDkbOIBAy7Gw%2F0%3Fwx_fmt%3Djpeg&amp;sign=a3baa13aa64406bbad776fe638349f8f" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwP2GmCOjsL8tuUSqJLG2a62rlarpv_xw2tRdHpkzPK_WBBoE_WRrKEZHKDQn7_OK5aRGTfP4VmRPvWgZF-i__jac-xe98_yijsNCWWDk9jct4G28VovWNbwYJSSFPgfogQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_7" uigs="article_title_7">Besti赛事|科普设计&mdash;&mdash;视觉盛宴,全新赛道,重磅来袭!</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_7">科普设计赛事视觉盛宴,全新赛道,重磅来袭!征途星辰大海每一个人都是创造者为助力和平、安全、开放、合作的网络空间建设,培...</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1732766219'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
		<!-- a -->
		<li id="sogou_vr_11002601_box_8" d="ab735a258a90e8e1-6bee54fcbd896b2a-601a554cf59f551e7e2c3ae3079750f0">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_8" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwM71p-NQcZqP6HzNaiANcf3jVGWGSfXPjrqR3dx-uAUpsgMmQWru00BOBta0qm5J88J43Cngz250CFDh7RWFg5wQHCyfQ44YW3m2NQp7GsG5Hq23W5G5o6U5eBgmN3LoYQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_8"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SPFBBWovAFTaSclXJx9crhT1K5iaYr6PqPvouu09uibeuNgiciapMLcnLb3FUQbFsvNXTEfbsSLRib7Q8w%2F0%3Fwx_fmt%3Djpeg&amp;sign=4a1c357d4b918ca507ef2ab2b1ec6be4" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwM71p-NQcZqP6HzNaiANcf3jVGWGSfXPjrqR3dx-uAUpsgMmQWru00BOBta0qm5J88J43Cngz250CFDh7RWFg5wQHCyfQ44YW3m2NQp7GsG5Hq23W5G5o6U5eBgmN3LoYQ..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_8" uigs="article_title_8"><em><!--red_beg-->CS<!--red_end--></em>活动|春枝绽绮梦,暖日绘新章&mdash;&mdash;&ldquo;创意织'网',天马行'空'&rdquo;第二十七期</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_8">&ldquo;<em><!--red_beg-->CS青漾<!--red_end--></em>&rdquo;公众号后台.期待各位CSer的创意投稿,精美周边等你来拿!文案:刘奕鸣排版:刘奕鸣审核:多乐、龙可欣</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1745657035'))</script></span>
</div>
</div>
</li>

		<!-- z -->
	
</ul>
    
<div class="p-fy" id="pagebar_container">
	<span>1</span><a id="sogou_page_2" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_2">2</a><a id="sogou_page_3" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=3&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_3">3</a><a id="sogou_page_4" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=4&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_4">4</a><a id="sogou_page_5" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=5&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_5">5</a><a id="sogou_page_6" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=6&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_6">6</a><a id="sogou_page_7" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=7&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_7">7</a><a id="sogou_page_8" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=8&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_8">8</a><a id="sogou_page_9" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=9&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_9">9</a><a id="sogou_page_10" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=10&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" uigs="page_10">10</a>
			<a id="sogou_next" href="?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1" class="np" uigs="page_next">下一页</a>
		
		<div class="mun">找到约335条结果<!--resultbarnum:335--></div>
</div>
    
</div>


        </div>
        
            <div class="snb-right" id="right">
                
            </div>
        
    </div>
    <div class="back-top" style="display: none;"><a href="javascript:void(0);" uigs="other_float_back_top"></a></div>
    
    <div class="bottom-form">
        

<form name="searchForm" action="/weixin">
    <div class="querybox">
        <div class="qborder">
            <div class="qborder2">
                <input type="hidden" name="type" value="2"/>
                <input type="hidden" name="s_from" value="input"/>
                <input type="text" class="query" name="query" id="query" ov="CS青漾" value="CS青漾" autocomplete="off"/>
                
                    <input type="hidden" name="ie" value="utf8"/>
                
                <a href="javascript:void(0)" class="qreset2" name="reset" uigs="search_reset"></a>
            </div>
        </div>
        <input type="button" value="搜文章" class="swz" onclick="search(this,2)" uigs="search_article"/>
        <input type="hidden" name="_sug_" value="n"/>
        <input type="hidden" name="_sug_type_" value=""/>
    </div>
</form>
    </div>

<div class="footer-box" id="s_footer">
    <div class="footer">
        <a id="sogou_webhelp" href="http://help.sogou.com/" target="_blank" uigs="bottom_ssbz">搜索帮助</a>&nbsp;<a href="https://fankui.sogou.com/index.php/web/web/index/type/4" target="_blank" uigs="bottom_yjfk">意见反馈及投诉</a>&nbsp;&copy;&nbsp;2025&nbsp;SOGOU.COM&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.sogou.com/docs/terms.htm" target="_blank" uigs="bottom_mzsm">免责声明</a>&nbsp;<a href="http://corp.sogou.com/private.html" target="_blank" uigs="bottom_yszc">隐私政策</a>
    </div>
</div>
    
        <script src="/new/pc/js/article.min.js?v=20161212"></script>
    
    <script>
        var WX_SUGG_PAGE_FROM="pcArtSearch";
        
        var SugPara = {
            "bigsize":true,
            "enableSug":true,
            "sugType":"wxart",
            "domain":"w.sugg.sogou.com",
            "productId":"web",
            "sugFormName":"sf",
            "submitId":"stb",
            "suggestRid":"01015002",
            "normalRid":"01019900",
            "oms":1,
            "nofixwidth":1,
            "useParent":1
        };
        uigs_para.exp_id = "null_0-null_1-null_2-null_3-null_4-null_5-null_6-null_7-null_8-";
        uigs_para.exp_id = uigs_para.exp_id.substring(0, uigs_para.exp_id.length - 1);
    </script>
    <script src="/new/weixin/js/uigs.min.js?v=20180607"></script>
    <script src="/new/pc/js/log.min.js?v=20170321"></script>
    <script src="/new/pc/js/event.min.js?v=20190822"></script>
    <script src="/new/pc/js/search.min.js?v=20161107"></script>
    <script src="/new/pc/js/suggestion.js?v=20231218"></script>
    <script src="/new/weixin/js/form.min.js?v=20170101"></script>
    

<script>
    (function(){$("a").on("mousedown click contextmenu",function(){var b=Math.floor(100*Math.random())+1,a=this.href.indexOf("url="),c=this.href.indexOf("&k=");-1!==a&&-1===c&&(a=this.href.substr(a+4+parseInt("21")+b,1),this.href+="&k="+b+"&h="+a)})})();
</script>

    <script defer async type="text/javascript" src="//dlweb.sogoucdn.com/barrier_free/pc/wzaV10/aria.js?appid=c4d5562ec7daa12a5a351cbe1a292da1" charset="utf-8"></script>
</body>
</html>
<!--1747405137215-->
<!--zly--><!--weixin-->

其中,我们应重点关注每一篇文章的结构

<li id="sogou_vr_11002601_box_1" d="ab735a258a90e8e1-6bee54fcbd896b2a-b287622e82fd86a61026b76ab738dc49">
<div class="img-box">
<a data-z="art" target="_blank" id="sogou_vr_11002601_img_1" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwARmiB9Zwx3mAMVZAhNE3f8qBpKJoddnsyxFqxJCvPJLHePWv3aKyXQ-6lW34rCyCu5FzkDCAG_dQscDojHxmMVQtMfqDkX-ppxSN8B1hjOoyr9K5uzdSrTYl_Q5RRZQjg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" uigs="article_image_1"><img src="//img01.sogoucdn.com/v2/thumb?appid=201147&amp;url=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fm8wddUDQ2SMxsNpia8gI3UtqSXopR5KcK2ic59wtVwY0Zntjrmo87wiaIzL3ITUNoJ6KsiaLUoJT2jNHvbyRYk0jIQ%2F0%3Fwx_fmt%3Djpeg&amp;sign=d64c40d37a282cac4b84f48dfe5bf525" onload="resizeImage(this,140,105)" onerror="errorImage(this)"></a>
</div>
<div class="txt-box">
<h3>
<a target="_blank" href="/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS9WwY1ByUiHgGVEq0rSEra3JgSnZ70fm01qXa8Fplpd9ERiCc0NQq5FeBBzbIOwU-tl3X1i3WbSzhmgvR02fbjyF8zgz_NwYwARmiB9Zwx3mAMVZAhNE3f8qBpKJoddnsyxFqxJCvPJLHePWv3aKyXQ-6lW34rCyCu5FzkDCAG_dQscDojHxmMVQtMfqDkX-ppxSN8B1hjOoyr9K5uzdSrTYl_Q5RRZQjg..&amp;type=2&amp;query=CS%E9%9D%92%E6%BC%BE&amp;token=3F09156668EC800C7F794A686289614F7F15EE6568274951" id="sogou_vr_11002601_title_1" uigs="article_title_1"><em><!--red_beg-->CS<!--red_end--></em>活动|创意暖心田,风和日景明&mdash;&mdash;&ldquo;创意织'网',天马行'空'&rdquo;第二十六期</a>
</h3>
<p class="txt-info" id="sogou_vr_11002601_summary_1">&ldquo;<em><!--red_beg-->CS青漾<!--red_end--></em>&rdquo;公众号后台.期待各位CSer的创意投稿,精美周边等你来拿!文案:洪海洋排版:洪海洋审核:多乐、龙可欣、彭佑</p>
<div class="s-p">
<span class="all-time-y2">CS青漾</span><span class="s2"><script>document.write(timeConvert('1744721209'))</script></span>
</div>
</div>
</li>

在每一篇文章中,对我们来说有用的分别是文章标题的“article_title_1”、文章链接、发布公众号的“all-time-y2”以及timeConvert后面的时间。(此处网站使用的是时间戳,需要正则表达式提取后进行转化)
https://weixin.sogou.com/weixin?oq=&query=CS%E9%9D%92%E6%BC%BE&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=1&_sug_=n&type=2&sst0=1747405137903&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1根据前面的网址寻找规律构建页面跳转。

def search_wechat_articles(account,start_date, end_date,save_path):
    headers={
        "User-Agent":"Mozilla/5.0" #头设置,模仿真人登录
    }
    base_url="https://weixin.sogou.com"
    articles=[]
    page=1
    while page<=5:
        url=f"{base_url}/weixin?type=2&s_from=input&query={account}&_sug_=n&_sug_type_=&type=2&page={page}&ie=utf8" #设置URL
        resp=requests.get(url,headers=headers,timeout=10) #爬取
        soup=BeautifulSoup(resp.text,"html.parser") #增强可读性
        items=soup.select('ul.news-list>li') #在特定标签内选择
        for item in items:
            txt_box=item.find("div", class_="txt-box")
            if not txt_box:
                continue
            publisher_tag=item.find("span", class_="all-time-y2") #发布者找出并筛选
            publisher=publisher_tag.get_text(strip=True) if publisher_tag else ""
            if publisher!=account:
                continue
            title_tag=txt_box.find("h3")
            if not title_tag or not title_tag.a:
                continue
            title=title_tag.get_text(strip=True) #链接获取
            link=base_url+title_tag.a["href"]
            real_link=link
            pub_time=""
            pub_time_tag=txt_box.find("span",class_="s2") #发布时间获取
            if pub_time_tag:
                script_tag=pub_time_tag.find("script")
                if script_tag and "timeConvert(" in script_tag.text:
                    match=re.search(r"timeConvert\('(\d+)'\)",script_tag.text)
                    if match:
                        timestamp=int(match.group(1))
                        pub_date_obj=datetime.datetime.fromtimestamp(timestamp)
                        pub_time=pub_date_obj.strftime("%Y-%m-%d")
                else:
                    pub_time=pub_time_tag.get_text(strip=True)
            try:
                pub_date=datetime.datetime.strptime(pub_time, "%Y-%m-%d")
                if not(start_date<=pub_date<=end_date):
                    continue
            except:
                pass
            articles.append({"标题":title,"链接":real_link,"发布时间":pub_time}) #存入
        page+=1 #找下一页
        time.sleep(random.uniform(2, 4)) #停顿降低被反爬概率
    return articles
  • 完整代码及使用效果
import tkinter as tk
from tkinter import filedialog, messagebox
from bs4 import BeautifulSoup
import pandas as pd
import datetime
import time
import openpyxl
import requests
import random
import re
def search_wechat_articles(account,start_date, end_date,save_path):
    headers={
        "User-Agent":"Mozilla/5.0"
    }
    base_url="https://weixin.sogou.com"
    articles=[]
    page=1
    while page<=5:
        url=f"{base_url}/weixin?type=2&s_from=input&query={account}&_sug_=n&_sug_type_=&type=2&page={page}&ie=utf8"
        resp=requests.get(url,headers=headers,timeout=10)
        soup=BeautifulSoup(resp.text,"html.parser")
        items=soup.select('ul.news-list>li')
        for item in items:
            txt_box=item.find("div", class_="txt-box")
            if not txt_box:
                continue
            publisher_tag=item.find("span", class_="all-time-y2")
            publisher=publisher_tag.get_text(strip=True) if publisher_tag else ""
            if publisher!=account:
                continue
            title_tag=txt_box.find("h3")
            if not title_tag or not title_tag.a:
                continue
            title=title_tag.get_text(strip=True)
            link=base_url+title_tag.a["href"]
            real_link=link
            pub_time=""
            pub_time_tag=txt_box.find("span",class_="s2")
            if pub_time_tag:
                script_tag=pub_time_tag.find("script")
                if script_tag and "timeConvert(" in script_tag.text:
                    match=re.search(r"timeConvert\('(\d+)'\)",script_tag.text)
                    if match:
                        timestamp=int(match.group(1))
                        pub_date_obj=datetime.datetime.fromtimestamp(timestamp)
                        pub_time=pub_date_obj.strftime("%Y-%m-%d")
                else:
                    pub_time=pub_time_tag.get_text(strip=True)
            try:
                pub_date=datetime.datetime.strptime(pub_time, "%Y-%m-%d")
                if not(start_date<=pub_date<=end_date):
                    continue
            except:
                pass
            articles.append({"标题":title,"链接":real_link,"发布时间":pub_time})
        page+=1
        time.sleep(random.uniform(2, 4))
    return articles
def choose_path():
    path=filedialog.asksaveasfilename(defaultextension=".xlsx",filetypes=[("Excel files", "*.xlsx")])
    save_path_var.set(path)
def run():
    account=account_var.get()
    start=start_var.get()
    end=end_var.get()
    save_path=save_path_var.get()
    try:
        start_date=datetime.datetime.strptime(start,"%Y-%m-%d")
        end_date=datetime.datetime.strptime(end,"%Y-%m-%d")
    except:
        messagebox.showerror("错误","请输入正确的日期格式(YYYY-MM-DD)")
        return
    if not account or not save_path:
        messagebox.showerror("错误","请输入公众号名称并选择保存路径")
        return
    articles=search_wechat_articles(account,start_date,end_date,save_path)
    if articles:
        df=pd.DataFrame(articles)
        df.to_excel(save_path,index=False)
        wb=openpyxl.load_workbook(save_path)
        ws=wb.active
        column_widths={
            'A':40,
            'B':80,
            'C':15
        }
        for col,width in column_widths.items():
            ws.column_dimensions[col].width=width
        wb.save(save_path)
        messagebox.showinfo("完成",f"共抓取到{len(articles)}篇文章,已保存到{save_path}")
    else:
        messagebox.showinfo("提示","未抓取到文章,请检查公众号名称或时间范围")
root=tk.Tk()
root.title("搜狗微信文章抓取")
tk.Label(root,text="公众号名称:").grid(row=0, column=0)
account_var=tk.StringVar()
tk.Entry(root,textvariable=account_var).grid(row=0, column=1)
tk.Label(root,text="起始日期(YYYY-MM-DD):").grid(row=1, column=0)
start_var=tk.StringVar()
tk.Entry(root,textvariable=start_var).grid(row=1, column=1)
tk.Label(root,text="结束日期(YYYY-MM-DD):").grid(row=2, column=0)
end_var=tk.StringVar()
tk.Entry(root,textvariable=end_var).grid(row=2, column=1)
tk.Label(root,text="保存路径:").grid(row=3, column=0)
save_path_var=tk.StringVar()
tk.Entry(root,textvariable=save_path_var, width=30).grid(row=3, column=1)
tk.Button(root,text="选择路径", command=choose_path).grid(row=3, column=2)
tk.Button(root,text="开始抓取", command=run).grid(row=4, column=1)
root.mainloop()

因为不想发B站所以传gitee上了,试了下嵌不进去所以需要自行下载

3. 实验过程中遇到的问题和解决过程

  • 问题一:库下载失败
  • 问题一解决方案:使用anaconda的python解释器下载。
  • 问题二:无法爬取到相关数据
  • 问题二解决方案:仔细阅读页面源代码,找到对应的标签
  • 问题三:爬取到的文章不全
  • 问题三解决方案:研读URL,找到切换页面的正确变换。

其他(感悟、思考等)

这段时间的Python课尽管碍于公选课的性质和课时,在教学上没有办法深入;但在老师提供的丰富的课程资料以及老师课上细致全面的讲解下,我所形成的对Python的整体认识和基础理解更加全面周到。
关于这次的实验,早就知道Python在爬虫方面的优势以及去年最后痛苦单调的整理工作,因此很早我就萌生了编写这个简化工作流程的程序的想法(虽然没想到微信反爬那么严)。虽然现在这个程序还处于不完善的状态,许多地方都需要加强,但目前为了安全着想还是先保留这个状态(等待负责人这种有后台权限的爬应该会更简单一点)。

参考资料

Python GUI 编程(Tkinter) | 菜鸟教程
tkinter标准对话框 filedialog:打开保存,文件对话框 - 云long - 博客园
Pandas 教程 | 菜鸟教程

posted @ 2025-06-06 14:55  好巧哦  阅读(75)  评论(0)    收藏  举报