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

作者:程康 时间:2023-10-12 14:15:19 

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

刚开始,我是这样想的:在写微信墙的时候,用到了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
0
投稿

猜你喜欢

  • python3.6.3+opencv3.3.0实现动态人脸捕获

    2022-12-21 11:59:41
  • python神经网络Xception模型复现详解

    2021-01-08 21:35:40
  • MySQL数据库中的重要数据应当如何保护

    2008-12-17 15:56:00
  • 浅谈python多线程和多线程变量共享问题介绍

    2022-08-29 04:34:18
  • 五大提高ASP运行效率的技巧

    2007-09-20 13:15:00
  • Python3实现的反转单链表算法示例

    2021-09-22 01:33:30
  • python实现邮件自动发送

    2023-06-10 16:24:44
  • python爬虫容易学吗

    2023-08-24 09:48:26
  • js打开新窗口方法整理

    2024-04-10 16:13:05
  • 浅谈beego默认处理静态文件性能低下的问题

    2024-04-25 13:21:19
  • Mysql索引创建删除及使用代价

    2024-01-16 15:32:35
  • 详解webpack编译速度提升之DllPlugin

    2024-02-23 20:57:10
  • 详解Python3操作Mongodb简明易懂教程

    2023-07-20 00:20:05
  • 分享5个方便好用的Python自动化脚本

    2021-04-12 08:27:32
  • Python Counting Bloom Filter原理与实现详细介绍

    2021-04-04 19:01:54
  • Python自动化之定位方法大杀器xpath

    2023-11-22 05:08:57
  • 详解 Go 语言中 Map 类型和 Slice 类型的传递

    2024-05-29 22:07:11
  • 解决Python3错误:SyntaxError: unexpected EOF while parsin

    2022-02-08 10:18:32
  • python好玩的项目—色情图片识别代码分享

    2022-01-26 03:19:19
  • Javascript闭包的作用与使用方法浅析

    2024-04-10 16:12:11
  • asp之家 网络编程 m.aspxhome.com