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


Posted in Python onApril 25, 2015

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

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

pyQuery 是 jQuery 在 Python 中的实现,能够以 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

好像学会了使用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解析html就可以获取网页内的课表了。

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

结果展示如图:

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

最后:

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

希望对大家有帮助。

Python 相关文章推荐
Python中的匿名函数使用简介
Apr 27 Python
Python中DJANGO简单测试实例
May 11 Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
网站渗透常用Python小脚本查询同ip网站
May 08 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
浅谈Django REST Framework限速
Dec 12 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
通过实例了解python__slots__使用方法
Sep 14 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 #Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 #Python
安装Python的web.py框架并从hello world开始编程
Apr 25 #Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 #Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 #Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 #Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 #Python
You might like
PHP音乐采集(部分代码)
2007/02/14 PHP
程序员编程十条戒律
2009/07/09 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
使用Python更换外网IP的方法
2018/07/09 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
python中PyQuery库用法分享
2021/01/15 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
生物技术研究生自荐信
2013/11/12 职场文书
岗位竞聘书范文
2014/03/31 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
红色电影观后感
2015/06/18 职场文书
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL