资讯专栏INFORMATION COLUMN

Python使用cookielib、urllib2和pyquery模拟登陆本科教学网并抓取数据

tuomao / 1285人阅读

摘要:原文链接使用和模拟登陆本科教学网并抓取数据刚才好无聊,突然想起来之前做一个课表的点子,于是百度了起来。使用现在,我们已经登录了本科教学网,然后结合之前的解析就可以获取网页内的课表了。

  

原文链接:《Python使用cookielib、urllib2和pyquery模拟登陆本科教学网并抓取数据》

刚才好无聊,突然想起来之前做一个课表的点子,于是百度了起来。

PyQuery

刚开始,我是这样想的:在写微信墙的时候,用到了urllib2【两行代码抓网页】,那么就只剩下解析html了。于是百度:python解析html。发现一篇好文章,其中介绍到了pyQuery

pyQueryjQueryPython中的实现,能够以jQuery的语法來操作解析 HTML 文档。使用前需要安装,Mac安装方法如下:

sudo easy_install pyquery

OK!安装好了!

我们来试一试吧:

from pyquery import PyQuery as pq
html = pq(url=u"http://seam.ustb.edu.cn:8080/jwgl/index.jsp")
#现在已经获取了本科教学网首页的html
classes = html(".haveclass")
#通过类名获取元素
#如果你对jQuery熟悉的话,那么你现在肯定明白pyQuery的方便了

更多用法参见pyQuery API

urllib、urllib2

好像学会了使用pyQuery就能抓课表了呢,但是,如果你直接用我的源码,肯定会出错。因为还没有登录啊!

所以,在运行这一行抓取正确的代码之前,我们需要模拟登录本科教学网。这个时候,我想起来urllib有模拟post请求的函数,于是我百度了:urllib post

这是一个最简的模拟post请求例子:

import urllib
import urllib2
import cookielib

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [("User-agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)")]
urllib2.install_opener(opener)
req = urllib2.Request("http://seam.ustb.edu.cn:8080/jwgl/Login",urllib.urlencode({"username":"41255029","password":"123456","usertype":"student"}))
req.add_header("Referer","http://xxoo.com")
resp = urllib2.urlopen(req)
#这里面用到了cookielib,我不太清楚,以后慢慢了解吧
#还用到了urllib和urllib2,urllib2大概是urllib的扩展包【233想到了三国杀

在这个最简的实例里,用我的校园网账号向登录页面提交表单数据,模拟登录。

PyQuery使用
现在,我们已经登录了本科教学网,然后结合之前的pyQuery解析html就可以获取网页内的课表了。

html = pq(url=u"http://seam.ustb.edu.cn:8080/jwgl/index.jsp")
self.render("index.html",data=html(".haveclass"))

结果展示如图:

最后:

我发现,pyQuery不但用于解析html非常方便,而且可以作为跨域抓取数据的工具,NICE!!!

希望对大家有帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37534.html

相关文章

  • Python定向爬虫,模拟新浪微博登录!

    摘要:当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。三模拟登录下面将介绍使用获取新浪微博,然后使用提交从而实现模拟登录。 当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容。 showImg(https://segmentfault.com/img/...

    isaced 评论0 收藏0
  • 【爬虫系列之三】URLError异常处理以及Cookie的使用

    摘要:一的处理出现产生的原因很多,比如网络没法连接,连接不到服务器,或者服务器不存在。二的使用,一般是某些网站为了辨别用户身份,进行跟踪,从而存储在客户端的数据。模块的主要作用是提供可存储的对象,以便于与模块配合使用来访问资源。 一、urlError的处理 出现urlError产生的原因很多,比如:网络没法连接,连接不到服务器,或者服务器不存在。在代码中,我们需要用try-except的语句...

    xiaochao 评论0 收藏0
  • 爬虫养成记 - urllib2的HTTPCookieProcessor

    摘要:相当于该用户的档案。上述的文字对机制描述的比较简单也并不一定完全正确。但是默认的并不支持。中供我们使用的是。创建需要闯入一个存放的容器。即过期的也保存。目前博主只知道链接后带的参数需要与相匹配。但是并不知道两者具体的关系。 很多网站的资源需要用户登录之后才能获取。我们一旦登录后再访问其他被保护的资源的时候,就不再需要再次输入账号、密码。那么网站是怎么办到的呢?一般来说,用户在登录之后,...

    gnehc 评论0 收藏0
  • Python入门网络爬虫之精华版

    摘要:学习网络爬虫主要分个大的版块抓取,分析,存储另外,比较常用的爬虫框架,这里最后也详细介绍一下。网络爬虫要做的,简单来说,就是实现浏览器的功能。 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下。 首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧:宁哥的小站-网络爬虫,当我们在浏览器中输入...

    Bmob 评论0 收藏0
  • 零基础如何学爬虫技术

    摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...

    KunMinX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<