1.程序描述 基于Python网络爬虫技术,在一些门户网站或社交网站爬取一些关于网络沉迷的案例、图片,以此为例撰写一篇关于防止网络沉迷的论文,可以论述怎样借助于Python爬虫技术实现相关内容的获取,也可以基于所编写Python爬虫程序获取的图片、案例或者文字信息,撰写网络沉迷的危害,以及怎样防止网络沉迷。
2.程序设计 2.1 设计思路 1.借助 selenium 爬虫爬取网上课堂以来的微博有关“青少年沉迷网络”的话题的相关动态。
2.借助 xlrd 模块提取爬取的内容。
3.借助词云wordcloud 和 jieba 模块进行关键词分析。
2.2 程序代码 代码一借助 selenium 自动化提取 “青少年沉迷网络” 的动态 [3]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 """ Created on 2018/11/27 下午 1:03 @author: FeiTao @Email: feitao_sydx@163.com @Software: PyCharm """ import timeimport datetimeimport refrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport xlwt driver = webdriver.Chrome()def LoginWeibo (username, password ): try : print ('准备登陆Weibo.cn网站...' ) driver.get("http://login.sina.com.cn/" ) elem_user = driver.find_element_by_name("username" ) elem_user.send_keys(username) elem_pwd = driver.find_element_by_name("password" ) elem_pwd.send_keys(password) elem_sub = driver.find_element_by_xpath("//input[@class='W_btn_a btn_34px']" ) elem_sub.click() try : time.sleep(10 ) elem_sub.click() except : pass print ('Crawl in ' , driver.current_url) print ('输出Cookie键值对信息:' ) for cookie in driver.get_cookies(): print (cookie) for key in cookie: print (key, cookie[key]) print ('登陆成功...' ) except Exception as e: print ("Error: " , e) finally : print ('End LoginWeibo!\n' )def GetSearchContent (key ): driver.get("http://s.weibo.com/" ) print ('搜索热点主题:' ) item_inp = driver.find_element_by_xpath("//input[@type='text']" ) item_inp.send_keys(key) item_inp.send_keys(Keys.RETURN) time.sleep(5 ) current_url = driver.current_url current_url = current_url.split('&' )[0 ] global start_stamp global page start_date = datetime.datetime(2020 , 2 , 25 ) end_date = datetime.datetime(2020 , 5 , 24 ) delta_date = datetime.timedelta(days=1 ) start_stamp = start_date end_stamp = start_date + delta_date global outfile global sheet outfile = xlwt.Workbook(encoding='utf-8' ) while end_stamp <= end_date: page = 1 sheet = outfile.add_sheet(start_stamp.strftime("%Y-%m-%d-%H" )) initXLS() url = current_url + '&typeall=1&suball=1×cope=custom:' + start_stamp.strftime( "%Y-%m-%d-%H" ) + ':' + end_stamp.strftime("%Y-%m-%d-%H" ) + '&Refer=g' driver.get(url) handlePage() start_stamp = end_stamp end_stamp = end_stamp + delta_datedef handlePage (): while True : time.sleep(1 ) if checkContent(): print ("getContent" ) getContent() if checkNext(): next_page_btn = driver.find_element_by_css_selector("#pl_feedlist_index > div.m-page > div > a.next" ) next_page_btn.click() else : print ("no Next" ) break else : print ("no Content" ) break def checkContent (): try : driver.find_element_by_xpath("//div[@class='card card-no-result s-pt20b40']" ) flag = False except : flag = True return flagdef checkNext (): try : driver.find_element_by_css_selector("#pl_feedlist_index > div.m-page > div > a.next" ) flag = True except : flag = False return flagdef checkqw (): try : driver.find_element_by_xpath(".//div[@class='content']/p[@class='txt']/a" ) flag = True except : flag = False return flagdef initXLS (): name = ['博主昵称' , '博主主页' , '微博认证' , '微博达人' , '微博内容' , '发布位置' , '发布时间' , '微博地址' , '微博来源' , '转发' , '评论' , '赞' ] global row global outfile global sheet row = 0 for i in range (len (name)): sheet.write(row, i, name[i]) row = row + 1 outfile.save("./crawl_output_YS.xls" )def writeXLS (dic ): global row global outfile global sheet for k in dic: for i in range (len (dic[k])): sheet.write(row, i, dic[k][i]) row = row + 1 outfile.save("./crawl_output_YS.xls" )def getContent (): try : nodes = driver.find_elements_by_xpath("//div[@class='card-wrap']/div[@class='card']" ) except Exception as e: print (e) if len (nodes) == 0 : input ("请在微博页面输入验证码!" ) url = driver.current_url driver.get(url) getContent() return dic = {} global page print (start_stamp.strftime("%Y-%m-%d-%H" )) print ('页数:' , page) page = page + 1 print ('微博数量' , len (nodes)) for i in range (len (nodes)): dic[i] = [] try : BZNC = nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']" ).get_attribute("nick-name" ) except : BZNC = '' print ('博主昵称:' , BZNC) dic[i].append(BZNC) try : BZZY = nodes[i].find_element_by_xpath(".//div[@class='content']/div[@class='info']/div[2]/a" ).get_attribute("href" ) except : BZZY = '' print ('博主主页:' , BZZY) dic[i].append(BZZY) try : WBRZ = nodes[i].find_element_by_xpath(".//div[@class='info']/div/a[contains(@title,'微博')]" ).get_attribute('title' ) except : WBRZ = '' print ('微博认证:' , WBRZ) dic[i].append(WBRZ) try : WBDR = nodes[i].find_element_by_xpath(".//div[@class='feed_content wbcon']/a[@class='ico_club']" ).get_attribute('title' ) except : WBDR = '' print ('微博达人:' , WBDR) dic[i].append(WBDR) try : nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']/a[@action-type='fl_unfold']" ).is_displayed() flag = True except : flag = False try : if flag: nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']/a[@action-type='fl_unfold']" ).click() time.sleep(1 ) WBNR = nodes[i].find_element_by_xpath(".//div[@class='content']/p[2]" ).text.replace("\n" ,"" ) try : nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']/a/i[@class='wbicon']" ).is_displayed() flag = True except : flag = False try : if flag: pattern = nodes[i].find_elements_by_xpath(".//div[@class='content']/p[2]/a[i[@class='wbicon']]" ) if isinstance (pattern,list ): text = [p.text for p in pattern] FBWZ = [loc for loc in [re.findall('^2(.*$)' , t) for t in text] if len (loc) > 0 ][0 ][0 ] else : text = pattern.text FBWZ = re.findall('^2(.*$)' ,text)[0 ] else : FBWZ = '' except : FBWZ = '' else : WBNR = nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']" ).text.replace("\n" ,"" ) try : nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='txt']/a/i[@class='wbicon']" ).is_displayed() flag = True except : flag = False try : if flag: pattern = nodes[i].find_elements_by_xpath(".//div[@class='content']/p[@class='txt']/a[i[@class='wbicon']]" ) if isinstance (pattern,list ): text = [p.text for p in pattern] FBWZ = [loc for loc in [re.findall('^2(.*$)' , t) for t in text] if len (loc) > 0 ][0 ][0 ] else : text = pattern.text FBWZ = re.findall('^2(.*$)' ,text)[0 ] else : FBWZ = '' except : FBWZ = '' except : WBNR = '' print ('微博内容:' , WBNR) dic[i].append(WBNR) print ('发布位置:' , FBWZ) dic[i].append(FBWZ) try : FBSJ = nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='from']/a[1]" ).text except : FBSJ = '' print ('发布时间:' , FBSJ) dic[i].append(FBSJ) try : WBDZ = nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='from']/a[1]" ).get_attribute("href" ) except : WBDZ = '' print ('微博地址:' , WBDZ) dic[i].append(WBDZ) try : WBLY = nodes[i].find_element_by_xpath(".//div[@class='content']/p[@class='from']/a[2]" ).text except : WBLY = '' print ('微博来源:' , WBLY) dic[i].append(WBLY) try : ZF_TEXT = nodes[i].find_element_by_xpath(".//a[@action-type='feed_list_forward']" ).text if ZF_TEXT == '转发' : ZF = 0 else : ZF = int (ZF_TEXT.split(' ' )[1 ]) except : ZF = 0 print ('转发:' , ZF) dic[i].append(ZF) try : PL_TEXT = nodes[i].find_element_by_xpath(".//a[@action-type='feed_list_comment']" ).text if PL_TEXT == '评论' : PL = 0 else : PL = int (PL_TEXT.split(' ' )[1 ]) except : PL = 0 print ('评论:' , PL) dic[i].append(PL) try : ZAN_TEXT = nodes[i].find_element_by_xpath(".//a[@action-type='feed_list_like']//em" ).text if ZAN_TEXT == '' : ZAN = 0 else : ZAN = int (ZAN_TEXT) except : ZAN = 0 print ('赞:' , ZAN) dic[i].append(ZAN) print ('\n' ) writeXLS(dic)if __name__ == '__main__' : username = '*************' password = '*************' LoginWeibo(username, password) key = '青少年沉迷网络' GetSearchContent(key)
代码二借助 xlrd 模块提取 xls 的动态栏数据至 txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import xlrddef extract (inpath,f ): date = xlrd.open_workbook(inpath, encoding_override='utf-8' ) sheets = date.nsheets print (sheets) for i in range (0 ,sheets): table = date.sheets()[i] nrows = table.nrows ncols = table.ncols for i in range (1 , nrows): alldate = table.row_values(i) result = alldate[4 ] print (result) f.write(result+"\n" ) inpath = 'D:\桌面\Python\拓展\weiboSpider-master\关键词爬取\crawl_output_YS.xls' f=open ("提取到的第二列数据.txt" ,"w" ,encoding="utf-8" ) extract(inpath,f) f.close()
代码三借助 jieba 和 wordcloud 模块将提取的动态数据进行分词、可视化操作 [5]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import jiebaimport wordcloudimport imageio mk = imageio.imread("未标题-1.png" ) w = wordcloud.WordCloud(width=1000 , height=700 , background_color='white' , font_path='msyh.ttc' , mask=mk, scale=5 ) f = open ('提取到的第五列数据.txt' ,encoding='utf-8' ) txt = f.read() txtlist = jieba.lcut(txt) string = " " .join(txtlist) w.generate(string) w.to_file('青少年沉迷网络01.png' )
2.3 运行结果示例
3.论文主体 通过爬取以及可视化之后我们发现爬取数据中出现频率较高的一些词汇包含以下内容: 青少年沉迷网络 收起全文(忽略) 网络 网路 游戏机 光盘 净空法师 阿弥陀佛 毒药 害人 网络游戏 侵蚀 荒废 杀人 荒废学业 色情 害人 祸害 法身 山东 临沂 杨氏模 机构 CCTV 今日说法 焦点访谈 救治 担心 孩子 挽回 千家万户 家长 民族 儿女 中国 文明 健康 强大 必须 严厉 监管 有关部门 腾讯 网吧 政府 支持 推广 公立 时间 观察 请问 央视 新闻 爱
接下来我将从家庭社会对青少年沉迷网络的态度做法来分析当前未成年人沉迷网络现状,由当前现状来分析为什么青少年会沉迷于网络,最后根据一些自己以及网络上的看法来分析如何做到防止青少年沉迷网络。
3.1 当前未成年人沉迷网络现状 当看到上面提取的关键词的时候,我的内心是极其欢喜的,因为在这些关键词里面我感觉到互联网的奇妙,互联网涵盖了几乎这个问问题的所有社会观点,于是我将这些关键词进行分类处理得到以下几类:
青少年沉迷网络
收起全文(忽略)
网络 网路 游戏机 光盘 腾讯 网络游戏 色情
净空法师 阿弥陀佛
毒药 侵蚀 杀人 荒废学业 害人 祸害
法身 山东 临沂 杨氏模 机构 CCTV 今日说法 焦点访谈 救治
担心 孩子 挽回 千家万户 家长
民族 儿女 中国 文明 健康 强大
必须 严厉 监管 有关部门 腾讯 网吧 政府 支持 推广 公立
时间 观察 请问 央视 新闻 爱
对以上词汇分析可得到一下几点内容: 当前青少年沉迷于网络多半是因为网络游戏,随着互联网的普及,各种互联网衍生品也层出不穷,例如色情、网络游戏等,互联网游戏公司也如雨后春笋般的蓬勃发展,也正是因为游戏的不断创作导致很多自制力还不健全的青少年沉浸其中。 随着青少年沉迷网络的数目不断变大,社会中讨伐互联网的舆论也不断上升,主要表现为: 互联网荒废青少年的学业 互联网就是毒药,祸害人。 互联很多是竞技比赛,打打杀杀导致社会犯罪率增加。
针对青少年沉迷网络,引发社会各种舆论对策:
家长对子女的担心、忧虑。 以山东临沂戒网中心为代表的所谓”杨氏模救治“机构的建立。 CCTV、焦点访谈针对未成年人沉迷网络的相关报道。 政府考虑社会热点以及民族未来开展“健康中国”“文明中国”活动。 政府推进对网吧、腾讯等平台的监管力度。 还有一部分人不反对青少年合理利用网络,认为互联网更像是七八十年代的摇滚乐,只是还没有被人们认可,暂时地认为是腐朽青年一代的产品。在他们看来,青少年沉迷网络的根本原因是由于家庭中缺少爱。
3.2 为什么青少年会沉迷网络
知乎问题:青少年为何会对网络成瘾?[6]
孩子没有获得足够的陪伴。 孩子没有获得尊重。 青少年的发展特点 根据马斯洛需求层次理论,人底层的需求被满足后,便会产生高层次的需。如果心理需求不能得到满足的话,会产生焦虑,孤独等心理问题。青少面时期是个体由不成熟过渡的重要时期,心理状态不稳定,情绪起伏大,自制力相对较差,心理需要比成年人强烈而明显。
从社会角度考虑,当今社会是互联网社会,随着笔记本电脑、平板、智能手机等互联网产品种类以及支付宝、淘宝、QQ、微信等软件的开发利用,涵盖人们生活的各个领域,娱乐作为人们日常生活重要的一部分,游戏行业蓬勃发展,也逐渐赢得了青少年的喜爱。再加上当今社会重功利化,家庭赋予太大的学习压力,游戏也顺势站在了学习的对立面;从青少年人群分析我们知道青少年自制力稍欠,并且获取信息的欲望很强,很难在网络中辨别是非,误入歧途;站在游戏的角度考虑,为什么会受到那么多人的喜爱。我想他们正是抓住了很多人在生活中没有存在感,缺少父母的陪伴,于是在网络中提供了一个可以有存在感的空间;但是最重要的一点还是家庭原因,青少年在家轻重缺少陪伴与关爱,再加上对现实生活的不满,他们不得不选择去互联网去释放压力寻求慰藉。
3.3 怎样才能做到防青少年沉迷网络
朱永新建议,从网络游戏类别、认证、时长、充值方面建立网络游戏强制分级制度,并由相关政府部门审核监管。根据目前社会发展客观实际和网络游戏内容,比如是否包含暴力内容、不良语言、性内容等,可从早教类、管控类、限制类、禁止类等方面划分,对不同年龄段的未成年人建立网络游戏产品分级制度,其中包括实行用户注册登录实名认证分级,通过未成年人及其监护人身份证信息、手机号或人脸识别等方式实行未成年人登录网游时段、时长监管分级,实行游戏充值限额分级等。
朱永新还建议,建立网络游戏分级监管与评价机制,并修订完善网络游戏法律法规,对《未成年保护法》《网络安全法》《出版管理条例》《网络游戏管理暂行办法》进行修订,增加“基于未成年人保护的网络游戏分级”相关内容。[6]
在今年两会上,也有关于青少年沉迷网络的声音,因为目前我国尚没有全国性的行业协会,相关法律法规及管理条例内容宏观,缺少具体的细则和分级方案,执行效果不明显。全国政协委员、民进中央副主席朱永新呼吁建立网络游戏分级制度,通过人脸识别等技术实行未成年人登入网游时段、时长监管分级,防止青少年沉迷网络游戏。因此,政府还应该完善相关法律制度,建立健全相关法律规章制度,企业也应做好对未成年人的监督,在技术层面上做到硬核防沉迷。
从家庭教育关注未成年人权益保护,是一个很重要的角度。家庭是青少年成长的第一环境,是预防青少年走向犯罪歧路的第一道防线。孩子出了问题,多数情况下说明家庭教育出了问题。现在正大修的未成年人保护法和预防未成年人犯罪法,都把家庭教育作为了发力点之一。但相对来说,这都是一些原则性规定,效力十分有限。制定专门的“家庭教育法”,是在更高维度上唤起社会重视:家庭教育是不是一门专门的学问?家长需不需要接受专门的教育?答案是肯定的。
这次疫情期间,让近2亿中小学生迎来史无前例的在线教育,同时也凸显了青少年沉迷网络的问题。许多家长惊奇地发现,以前总是把问题归咎为“没时间照顾孩子”,但现在陪孩子的时间多了,却发现不了解他们,甚至无法沟通交流。这种尴尬指向的是,大多数人结婚生子后就无师自通,不需要学习就当上了家长。这实际是不够的,正如蒙台梭利所说,“儿童是成人之父”。和孩子相处是个学习和成长过程,家长们不应把教育看得太简单。
以“沉迷游戏”为例。调查显示,有4种青少年特别容易出现游戏成瘾现象,分别是家庭条件较差的;隔代教育下的;家庭关系差、亲子互动少的;家长对子女游戏行为没有限制的。它的心理机制是:亲子互动不足,只好到游戏里找补偿。家长需要反思的是,如果只生不养、只养不教,一下班自己也玩游戏,将孩子丢给别人看护,甚至拿手机当“电子保姆”,孩子很可能产生心理偏差。可见,家长需要接受教育,思考怎样正确爱孩子,让孩子健康成长。
进一步,“家庭教育法”有助于厘清家庭教育和学校教育的责任边界。学校、社会、家庭教育三者为一体,学校教育负责传道授业,社会教育重在历事练心,家庭教育关心爱和成长,三者互为犄角,谁也取代不了谁。但在现实中,人们常常把孩子的希望寄托在学校,过分夸大学校教育的作用,轻视自己的责任,这是一种失职渎职。进一步明确家庭教育的定位和功能,有利于家长看到自身责任,从而合力探讨家庭教育怎么做,它的着力点、抓手在哪里。
“天下之本在国,国之本在家。”习近平总书记多次强调要“注重家庭、注重家教、注重家风”,强调家长要给孩子讲好“人生第一课”,帮助扣好人生第一粒扣子,并强调要认真研究家庭领域出现的新情况新问题,把推进家庭工作作为一项长期任务抓实抓好。长期以来,家庭教育被认为是私领域的事,没有引起足够重视。人大代表的立法建议,有利于提升家庭教育地位、规范家庭教育行为。就目前来讲,如果能引起家庭的反思,也是件十分有益的事。
[7]
当然最重要的还是家庭层面,有时候孩子需要的不是锦衣玉食、而是陪伴。现代生活中,人们的生活逐渐碎片化,家长们越来越忙,家里买台电脑、买个平板可以让孩子在网上学习,但是对于孩子来说,他们尚未形成良好的自制能力,对网络繁杂的信息,没有辨别好坏的能力,他会忍不住玩游戏或者浏览色情网站,从而潜移默化的影响着他们的生活习惯甚至一生。因此,家长应该正视互联网或者游戏,不是上网就是有“网瘾”,应该重视与孩子的沟通,寓教于乐,多关注孩子的动态以及上网习惯、及时对孩子进行正面指导[8]。学校社会媒体也应该正视网络,不要妖魔化网络,积极宣传正能量,引导青少年健康文明上网。
正如上文所说,此次疫情“网上课堂”凸显了这个问题,我们就应该全民正视这个问题,不要推脱责任给任何不良机构或者控诉某些企业,多从自己方面找原因,这一点,我认为家长、学校、社会三方都应该做好反思。
4 结论 网络上对互联网的夸赞不胜其属,其中就有人认为互联网解放了青少年的思想,固然他拓宽了人们获取知识的渠道,当然随着生活水平的提高,互联网的确给生活带来了极大的便利,但是这仍然无法掩盖互联网是把双刃剑的事实。在这里,最主要的还是家长需要接受教育,思考怎样正确爱孩子,让孩子健康成长。请不要绑架互联网,互联网只是工具,说白了,没有上瘾与不上瘾,只有失败和不失败。这不应该是家长掩盖教育失败这个事实而冠冕堂皇的理由。当然,政府企业也应该重视青少年的发展。建立健全相关法律法规,完善监管制度,让祖国的下一代能够健康成长。
参考