摘要:原文鏈接使用和模擬登陸本科教學(xué)網(wǎng)并抓取數(shù)據(jù)剛才好無聊,突然想起來之前做一個(gè)課表的點(diǎn)子,于是百度了起來。使用現(xiàn)在,我們已經(jīng)登錄了本科教學(xué)網(wǎng),然后結(jié)合之前的解析就可以獲取網(wǎng)頁內(nèi)的課表了。
原文鏈接:《Python使用cookielib、urllib2和pyquery模擬登陸本科教學(xué)網(wǎng)并抓取數(shù)據(jù)》
剛才好無聊,突然想起來之前做一個(gè)課表的點(diǎn)子,于是百度了起來。
PyQuery剛開始,我是這樣想的:在寫微信墻的時(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
urllib、urllib2好像學(xué)會(huì)了使用pyQuery就能抓課表了呢,但是,如果你直接用我的源碼,肯定會(huì)出錯(cuò)。因?yàn)檫€沒有登錄??!
所以,在運(yùn)行這一行抓取正確的代碼之前,我們需要模擬登錄本科教學(xué)網(wǎng)。這個(gè)時(shí)候,我想起來urllib有模擬post請(qǐng)求的函數(shù),于是我百度了:urllib post。
這是一個(gè)最簡的模擬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想到了三國殺
在這個(gè)最簡的實(shí)例里,用我的校園網(wǎng)賬號(hào)向登錄頁面提交表單數(shù)據(jù),模擬登錄。
PyQuery使用
現(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ì)大家有幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37534.html
摘要:當(dāng)我們?cè)噲D從新浪微博抓取數(shù)據(jù)時(shí),我們會(huì)發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。三模擬登錄下面將介紹使用獲取新浪微博,然后使用提交從而實(shí)現(xiàn)模擬登錄。 當(dāng)我們?cè)噲D從新浪微博抓取數(shù)據(jù)時(shí),我們會(huì)發(fā)現(xiàn)網(wǎng)頁上提示未登錄,無法查看其他用戶的信息。模擬登錄是定向爬蟲制作中一個(gè)必須克服的問題,只有這樣才能爬取到更多的內(nèi)容。 showImg(https://segmentfault.com/img/...
摘要:一的處理出現(xiàn)產(chǎn)生的原因很多,比如網(wǎng)絡(luò)沒法連接,連接不到服務(wù)器,或者服務(wù)器不存在。二的使用,一般是某些網(wǎng)站為了辨別用戶身份,進(jìn)行跟蹤,從而存儲(chǔ)在客戶端的數(shù)據(jù)。模塊的主要作用是提供可存儲(chǔ)的對(duì)象,以便于與模塊配合使用來訪問資源。 一、urlError的處理 出現(xiàn)urlError產(chǎn)生的原因很多,比如:網(wǎng)絡(luò)沒法連接,連接不到服務(wù)器,或者服務(wù)器不存在。在代碼中,我們需要用try-except的語句...
摘要:相當(dāng)于該用戶的檔案。上述的文字對(duì)機(jī)制描述的比較簡單也并不一定完全正確。但是默認(rèn)的并不支持。中供我們使用的是。創(chuàng)建需要闖入一個(gè)存放的容器。即過期的也保存。目前博主只知道鏈接后帶的參數(shù)需要與相匹配。但是并不知道兩者具體的關(guān)系。 很多網(wǎng)站的資源需要用戶登錄之后才能獲取。我們一旦登錄后再訪問其他被保護(hù)的資源的時(shí)候,就不再需要再次輸入賬號(hào)、密碼。那么網(wǎng)站是怎么辦到的呢?一般來說,用戶在登錄之后,...
摘要:學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分個(gè)大的版塊抓取,分析,存儲(chǔ)另外,比較常用的爬蟲框架,這里最后也詳細(xì)介紹一下。網(wǎng)絡(luò)爬蟲要做的,簡單來說,就是實(shí)現(xiàn)瀏覽器的功能。 Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個(gè)大的版塊:抓取,分析,存儲(chǔ) 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細(xì)介紹一下。 首先列舉一下本人總結(jié)的相關(guān)文章,這些覆蓋了入門網(wǎng)絡(luò)爬蟲需要的基本概念和技巧:寧哥的小站-網(wǎng)絡(luò)爬蟲,當(dāng)我們?cè)跒g覽器中輸入...
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...
閱讀 1560·2021-11-25 09:43
閱讀 4112·2021-11-15 11:37
閱讀 3231·2021-08-17 10:13
閱讀 3539·2019-08-30 14:16
閱讀 3564·2019-08-26 18:37
閱讀 2515·2019-08-26 11:56
閱讀 1171·2019-08-26 10:42
閱讀 648·2019-08-26 10:39