在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生成随机mac地址的方法
Mar 16 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
python 链接和操作 memcache方法
Mar 04 Python
python和shell获取文本内容的方法
Jun 05 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
Javascript的闭包详解
2014/12/26 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python生成随机数组的方法小结
2017/04/15 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
python能自学吗
2020/06/18 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
python re模块常见用法例举
2021/03/01 Python
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
上班早退检讨书
2014/01/09 职场文书
模具数控专业自荐信
2014/01/27 职场文书
求职意向书
2014/04/01 职场文书
研究生导师推荐信
2014/09/06 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
学雷锋倡议书
2015/01/19 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android