声明:本文仅供学习参考

这个功能终于实现了,如果请求太快,很容易被系统发现(输入验证码)所以没用多线程

对于cookie的获取采取手动方式,也可以尝试从浏览器获取cookie,cookie需要转化为字典形式

 # coding   :utf-8
 # @Time    : 2017/8/7 8:00
 # @Author  : Yong-life
 # @File    : translateCookies.py

 def translatestr(cookie):
     cookie = cookie.replace('Cookie:','')
     cookie = cookie.replace(' ','')
     cookies = cookie.split(';')
     for i in range(len(cookies)):
         cookies[i] = cookies[i].replace('=', ':', 1)
     cookies_dict = {}
     for header in cookies:
         L = header.split(':' ,1)
         cookies_dict[L[0]] = L[1]
     return cookies_dict

手动模拟了几遍,发现关键的几部,就可以完成了

 # coding   :utf-8
 # @Time    : 2017/8/7 9:19
 # @Author  : Yong-life
 # @File    : CrawlingNetStudyRoom.py

 import re
 import time
 import requests
 from translateCookies import translatestr
 def gethtml(url):
     cookie = '__dxca=75091f84-4096-4d77-ba79-47356cc19b1e; 2334userinfo=bd47f4dce1b38171d15866435d79f7a9d807a544f7930b6abeaaa6286f1f1754e7876672f860a859c0433867ead52763adde0d57e85b541e; 2334UID=27561080; 2334enc=2DC5074C7374D67F2ACD4C1F5A7E7F56; _uid=27561080; uf=0d7d2f765ae428714a3fffffed66c4445f985d480e6f2f069b0594e13f4b452f9f4fcd6f19e32a2edcaf7a1eebd6007c0d8a4c92b12beb4be5b05dc70bcb18cfc05a9b956030332946da21146a924e23; _d=1502066525521; UID=27561080; vc=2DC5074C7374D67F2ACD4C1F5A7E7F56; vc2=AD5E945ED353A9AE790FA793E860A279; DSSTASH_LOG=C_38-UN_968-US_27561080-T_1502066525521; k8s=ba998ae2451b05102dd62f59c4aae09e27424974; route=7aaebcbdcf7cf94856c7fb5f82d77b4b; fanyamoocs=5CED1B5320BFFBA211401F839C536D9E; fid=2334; isfyportal=1; JSESSIONID=42822D4D414525EFAF03F092E432FCEA'
     cookie = translatestr(cookie)
     header = {
         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
         'Content-Type': 'text/html;charset=UTF-8'#
     }
     response = requests.get(url, headers=header, cookies=cookie)
     return response.text
 def crawlingClassid(html):
     classidList = []
     pattern_classid = 'class="Mcon1img httpsClass" >[\s]*<a[\s]*href=\'(.*?)\'  target="_blank"   >'
     classidList.extend(re.findall(pattern_classid, html))
     fileList = []
     pattern_file = r'class="Mcon1img">[\s]*<input type="hidden" value="(.*?)" />'
     fileList.extend(re.findall(pattern_file, html))
     for file_id in fileList:
         file_url = 'http://mooc1.xynu.edu.cn/visit/courses/study?isAjax=true&fileId=' + file_id
         classidList.extend(crawlingClassid(gethtml(file_url)))
     return classidList
 def sendMsg(courseId, clazzid, count):
     url = 'http://mooc1.xynu.edu.cn/bbscircle/grouptopic/publish'
     cookie = '__dxca=75091f84-4096-4d77-ba79-47356cc19b1e; 2334userinfo=bd47f4dce1b38171d15866435d79f7a9d807a544f7930b6abeaaa6286f1f1754e7876672f860a859c0433867ead52763adde0d57e85b541e; 2334UID=27561080; 2334enc=2DC5074C7374D67F2ACD4C1F5A7E7F56; _uid=27561080; uf=0d7d2f765ae428714a3fffffed66c4445f985d480e6f2f069b0594e13f4b452f9f4fcd6f19e32a2edcaf7a1eebd6007c0d8a4c92b12beb4be5b05dc70bcb18cfc05a9b956030332946da21146a924e23; _d=1502066525521; UID=27561080; vc=2DC5074C7374D67F2ACD4C1F5A7E7F56; vc2=AD5E945ED353A9AE790FA793E860A279; DSSTASH_LOG=C_38-UN_968-US_27561080-T_1502066525521; k8s=ba998ae2451b05102dd62f59c4aae09e27424974; route=7aaebcbdcf7cf94856c7fb5f82d77b4b; fanyamoocs=5CED1B5320BFFBA211401F839C536D9E; fid=2334; isfyportal=1; JSESSIONID=42822D4D414525EFAF03F092E432FCEA'

     cookie = translatestr(cookie)
     header = {
         'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'  #
     }
     for i in range(1, count):
         data = ('courseId='+ courseId +'&clazzid='+ clazzid +'&title='+ str(i) +'&content=&type=4&files=').encode('utf-8')
         print('send: ' + courseId +' '+ str(i))
         response = requests.post(url, data, cookies=cookie, headers=header)
         time.sleep(3)
 def managerCrawling():
     url = 'http://mooc1.xynu.edu.cn/visit/courses?template=1&s=7c6b45e1ac1448adf0ff862c75c8ab3f'
     html = gethtml(url)
     MAX_COUNT = 3
     class_url_list = crawlingClassid(html)
     threads = []
     for i,url in zip(range(len(class_url_list)), class_url_list):
         pattern_class = r'courseId=(.*?)&clazzid=(.*?)&enc'
         regx =  re.search(pattern_class, url)
         courseId, clazzid = regx.group(1), regx.group(2)
         sendMsg(courseId, clazzid, MAX_COUNT)
 if __name__=='__main__':
     managerCrawling()

效果:

python--爬虫--利用cookie登录网络教学中心刷评论的更多相关文章

  1. 用cookie登录慕课网络教学中心刷评论

    声明:本文仅供学习参考 我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到cookie 注意:没次提交后需要休眠,否则刷评论过快会被系统发现 如果请求太快,很容易被系统发现( ...

  2. python爬虫-使用cookie登录

    前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...

  3. python爬虫+使用cookie登录豆瓣

    2017-10-09 19:06:22 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 先获得cookie,然后自动登录豆瓣和新浪微博 系统环境: 64位win10系统,同时装pytho ...

  4. Python爬虫之模拟登录微信wechat

    不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...

  5. Python爬虫-百度模拟登录(二)

    上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...

  6. js利用cookie登录网站

    如上图,我们获取到了cookie,接下来利用cookie登录相应的网站. 我用的浏览器是火狐,首先在特定的网站(也就是我们发现XSS漏洞的网站,这里指的是pikachu)F12打开开发者工具,找到控制 ...

  7. 1.python+selenium利用cookie,跳过验证码直接登录

    方法1 在登录时,叫代码等待一段时间,然后手动输入验证码 # coding:utf-8 from selenium import webdriver import time url = 'http:/ ...

  8. 【Python爬虫】01:网络爬虫--规则

    Python网络爬虫与信息提取 目标:掌握定向网络数据爬取和网页解析的基本能力. the website is the API 课程分为以下部分: 1.requsets库(自动爬取HTML页面.自动网 ...

  9. Python爬虫之Cookie和Session

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

随机推荐

  1. PHP中几个输出函数echo,print(),print_r(),sprintf(),var_dump()的区别

    1:echo:是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号.不能输出数组和对象,只能打印简单类型(如int,string). 2:print:是语句不是函数,有返回值 1 ,只能输出一个 ...

  2. Java中使用 Long 表示枚举类

    Java中使用 Long 表示枚举类 在日常的开发过程中,很多时候我们需要枚举类(enum)来表示对象的各种状态,并且每个状态往往会关联到指定的数字,如: private enum Color { R ...

  3. smarty模板自定义变量

    一.通过smarty方式调用变量调节器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  4. 门控开关项目--使用Multism仿真

    可以修改桥式整流电路的电容,发现容值不合适的时候,直流不平稳.

  5. android app调试没问题,但打包签名的apk,运行时出现闪退怎么办?

    在用Eclipse编写Android app时,有时调试时没有问题,但一经打包签名,运行就出现闪退,还报错说找不到某某类.一开始以为是混淆导致的,后来我没有混淆竟然也还是这个问题.无奈只得网上寻找解决 ...

  6. 在vs2010中显示代码的行数

    1.打开VS2010,然后"工具" → "选项" 2.在选项页面,点击"文本编辑器"→"所有语言",在显示里将[行号]选 ...

  7. Linux配置LNMP环境(三)配置MySQL

    1.执行代码:cd /usr/local/rsc下载MySQL,我是从搜狐镜像上下载的:http://mirrors.sohu.com/mysql/MySQL-5.5/,我下载的是64位(注意)的,下 ...

  8. JS运动框架的封装过程(一)

    给大家出一道题,从起点A走到目的地B,一共用了1000毫秒,每一次是30毫秒,请问你在这里面得到了哪些信息? 信息有哪些呢? 第一个,总时长是:1000毫秒 第二个,多久时间走一次?30毫秒 第三个, ...

  9. 为实体类增加toJSON方法

    后期子类继承该基础类即可. package com.lichmama.test; import java.io.Serializable; import java.lang.reflect.Field ...

  10. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...