在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验证码识别处理实例
Dec 28 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python分支结构(switch)操作简介
Jan 17 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
查看python下OpenCV版本的方法
Aug 03 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
python占位符输入方式实例
May 27 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
opencv python图像梯度实例详解
Feb 04 Python
python_mask_array的用法
Feb 18 Python
详解Python中第三方库Faker
Sep 25 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
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
销售业务员岗位职责
2014/01/29 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
会计求职信
2014/05/29 职场文书
社保委托书怎么写
2014/08/02 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
小学一年级语文教学反思
2016/03/03 职场文书