python网页数据抓取(Python中使用cookielib和rllib2配合PyQuery抓取网页信息的教程)

优采云 发布时间: 2022-03-15 05:14

  python网页数据抓取(Python中使用cookielib和rllib2配合PyQuery抓取网页信息的教程)

  在Python中使用cookielib和urllib2用PyQuery抓取网页信息

  更新时间:2015年4月25日10:53:52 转载:程康

  本文章主要介绍Python中使用cookielib和rllib2配合PyQuery抓取网页信息的教程,主要是使用PyQuery解析HTML来实现,有需要的朋友可以参考以下

  刚才好无聊,突然想起之前做课表的想法,于是百度起来。

  一开始我是这样想的:我写微信墙的时候,用的是urllib2【两行代码抓取网页】,所以只需要解析html。于是百度:python解析html。找到了一个不错的文章,里面引入了pyQuery。

  pyQuery是jQuery在Python中的实现,可以用jQuery的语法解析HTML文档?*敏*感*词*。使用前需要安装。Mac安装方法如下:

  

sudo easy_install pyquery

  好的!安装!

  让我们试一试:

  

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

  看来学用pyQuery的话,可以抓到时间表,但如果直接用我的源码,肯定会出错。因为我还没有登录!

  所以,在运行此行获取正确代码之前,我们需要模拟登录本科教学网络。这时候才想起urllib有模拟post请求的功能,于是我百度了:urllib 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解析html,就可以在网页中得到课程表了。

  

html = pq(url=u'http://seam.ustb.edu.cn:8080/jwgl/index.jsp')

self.render("index.html",data=html('.haveclass'))

  结果如图所示:

  

  最后:

  发现pyQuery不仅解析html非常方便,还可以作为跨域抓取数据的工具,NICE!!!

  我希望每个人都必须提供帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线