在Python中使用cookielib和urllib2配合PyQuery抓取網(wǎng)頁信息
剛才好無聊,突然想起來之前做一個(gè)課表的點(diǎn)子,于是百度了起來。
剛開始,我是這樣想的:在寫微信墻的時(shí)候,用到了urllib2【兩行代碼抓網(wǎng)頁】,那么就只剩下解析html了。于是百度:python解析html。發(fā)現(xiàn)一篇好文章,其中介紹到了pyQuery。
pyQuery 是 jQuery 在 Python 中的實(shí)現(xiàn),能夠以 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') #現(xiàn)在已經(jīng)獲取了本科教學(xué)網(wǎng)首頁的html classes = html('.haveclass') #通過類名獲取元素 #如果你對(duì)jQuery熟悉的話,那么你現(xiàn)在肯定明白pyQuery的方便了 更多用法參見pyQuery API
好像學(xué)會(huì)了使用pyQuery就能抓課表了呢,但是,如果你直接用我的源碼,肯定會(huì)出錯(cuò)。因?yàn)檫€沒有登錄啊!
所以,在運(yùn)行這一行抓取正確的代碼之前,我們需要模擬登錄本科教學(xué)網(wǎng)。這個(gè)時(shí)候,我想起來urllib有模擬post請(qǐng)求的函數(shù),于是我百度了:urllib post。
這是一個(gè)最簡(jiǎn)的模擬post請(qǐng)求例子:
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的擴(kuò)展包【233想到了三國(guó)殺
在這個(gè)最簡(jiǎn)的實(shí)例里,用我的校園網(wǎng)賬號(hào)向登錄頁面提交表單數(shù)據(jù),模擬登錄。
現(xiàn)在,我們已經(jīng)登錄了本科教學(xué)網(wǎng),然后結(jié)合之前的pyQuery解析html就可以獲取網(wǎng)頁內(nèi)的課表了。
html = pq(url=u'http://seam.ustb.edu.cn:8080/jwgl/index.jsp') self.render("index.html",data=html('.haveclass'))
結(jié)果展示如圖:
最后:
我發(fā)現(xiàn),pyQuery不但用于解析html非常方便,而且可以作為跨域抓取數(shù)據(jù)的工具,NICE!!!
希望對(duì)大家有幫助。
- Python如何使用BeautifulSoup爬取網(wǎng)頁信息
- Python使用正則表達(dá)式獲取網(wǎng)頁中所需要的信息
- Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能示例【URL與正則模塊】
- 用Python程序抓取網(wǎng)頁的HTML信息的一個(gè)小實(shí)例
- python使用BeautifulSoup分析網(wǎng)頁信息的方法
- python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)
- python如何爬取動(dòng)態(tài)網(wǎng)站
- python 爬取B站原視頻的實(shí)例代碼
- Python爬取網(wǎng)頁信息的示例

pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn)

python生成詞云的實(shí)現(xiàn)方法(推薦)

Python定時(shí)任務(wù)APScheduler安裝及使用解析

一文教你用Python中progress庫實(shí)現(xiàn)進(jìn)度條

Python PyAutoGUI實(shí)現(xiàn)自動(dòng)化任務(wù)應(yīng)用場(chǎng)景示例

python利用itertools生成密碼字典并多線程撞庫破解rar密碼

Python計(jì)算三角函數(shù)之a(chǎn)sin()方法的使用

python3中超級(jí)好用的日志模塊-loguru模塊使用詳解