在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中的高级数据结构详解
Mar 27 Python
python中字符串前面加r的作用
Jun 04 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
Python中list初始化方法示例
Sep 18 Python
详解django自定义中间件处理
Nov 21 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
python代码中怎么换行
Jun 17 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
Matplotlib绘制混淆矩阵的实现
May 27 Python
使用Django实现商城验证码模块的方法
Jun 01 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 23 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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
用console.table()调试javascript
2014/09/04 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
Python 处理数据的实例详解
2017/08/10 Python
Django中的Signal代码详解
2018/02/05 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python 实现屏幕录制示例
2019/12/23 Python
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
教师自我鉴定
2013/12/13 职场文书
精彩的英文自荐信
2014/01/30 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
移风易俗倡议书
2014/04/15 职场文书
和解协议书
2014/04/16 职场文书
房地产端午节活动方案
2014/08/24 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2015年春节标语口号
2014/12/09 职场文书
写给领导的感谢信
2015/01/22 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
疾病证明书
2015/06/19 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技