声明:本文仅供学习参考

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

对于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. Sql_Case_When用法

    http://wenku.baidu.com/link?url=XBnkUzGtiJFhTnQk5HbmdgndhVEYJdcfDEhSEIFeTRn9-41KMLf_49wKiydNCF-4g3Qi ...

  2. Let's Encrypt 免费SSL证书

    Let's Encrypt免费又好用的证书,废话不多说.    假设我的域名为:163.org   1.克隆代码 git clone https://github.com/letsencrypt/le ...

  3. java中得到图片的宽度 高度:

    java中得到图片的宽度 高度:BufferedImage srcImage = null;srcImage = ImageIO.read(new File(srcImagePath));int sr ...

  4. 持续集成篇-- SonarQube代码质量管理平台的配置与使用

    样例视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 一.SonarQube的配置(前提,先用admin用 ...

  5. css里面position:relative与position:absolute的区别

    position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...

  6. [leetcode-565-Array Nesting]

    A zero-indexed array A consisting of N different integers is given. The array contains all integers ...

  7. JVM总结之内存区域

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,有的区域是线程共享的,有的区域是线程隔离的.如下图: 程序计数器 程序计数器(Progra ...

  8. javascript运动框架(二)

    紧接着上面写的... 给div加一个边框,border:1px solid black window.onload = function(){      var div = document.getE ...

  9. smarty模板基本语法

    smarty基本语法: 1.注释:<{* this is a comment *}>,注意左右分隔符的写法,要和自己定义的一致. <{* I am a Smarty comment, ...

  10. ES6简介

    function fn(){ return 100; } let name='sui'; let age=19; let sui={ name, age, ["pro"+fn()] ...