程式設計雜筆

[程設雜筆] python爬蟲初試啼聲——登入取得cookie,並爬到資料

利用準備段考的空檔時間,練習寫寫看網路爬蟲,順便完成最近想完成的一件事。使用的語法是python。這是本部落格第一篇python技術文,灑花:)

會學python,其實是因為人工智慧課所學的,真的是一兼二顧,摸蛤仔兼洗褲。恰好我也想當一名業餘的資料科學家,而爬蟲是基本的技能,就花了點時間試試看。

其實之前就有寫過一次爬蟲,是用nodejs寫的,不過因為library太不齊全,雖然有成功,但寫起來很廢事。這次直接拿出技能樹中最新的python去寫,真的是好用到炸啊。

要會網路爬蟲,不只是要會python(當然也可以用其它語言去爬啦,但python是最好用的),也要會網路前後端的很多知識,不過如果有這些先備知識,要上手易如反掌,從開始到結束,只花了我幾個小時,就從無到有了。假如沒這些了解的話,那貿然進爬蟲,我覺得可能會有一些痛苦。不過,多花個一些時間查就可以了解了,也無妨。

廢話不多說,直接上code。

這個流程是要先到登入頁面去,送出帳密後,取得cookie,然後去拿到登入後才能拿到的資料。先到login頁面去,取得xsrf-token,然後設定好後,再post資料到/api/login這裡去,真正驗證登入。驗證完後,就暢行無阻啦!


import urllib, urllib2, cookielib
import json

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

token = opener.open('https://xxx.xxx.xx/login').info().getheader('set-cookie')[11:47]
login_data = urllib.urlencode({
'user' : 'xxx',
'password' : 'xxx'})
opener.addheaders.append(('x-xsrf-token', token))
response = opener.open('https://xxx.xxx.xx/api/login', login_data)
resp = opener.open('https://xxx.xxx.xx')
chat = json.loads(resp.read(), 'utf-8')

7 thoughts on “[程設雜筆] python爬蟲初試啼聲——登入取得cookie,並爬到資料

  1. 你好,最近因為學習Python而有幸到此部落格,目前是資管系的學生,不過技術底很弱,想趁暑假好好精進,我在udacity cs101這堂課粗淺地學到了如何利用Python寫一個很基本的搜尋引擎,但是因為他有教我才了解,也拜讀了你的"寫網頁",很難嗎",但是目前迷茫中..,不曉得該做什麼作品才能像你一樣有機會到竹科打工(舉例),不曉得是不是可以尋求你的建議,謝謝。

    Liked by 1 person

    1. 嗨你好,先謝謝你讀我的文章:)

      關於你的問題,如果現在有人請我寫一個簡單的搜尋引擎,我也不會寫
      但是在查完資料後,應當要能構建出簡單的搜尋引擎
      意即不會就查,任何高手遇到不會的也都是查

      我覺得迷茫是很正常的
      一年前我什麼都不會,直接跳進寫網頁
      其間我也想過要做出什麼樣的作品,才能獲得青睞,隔年的暑假才能去實習
      到今年暑假,我沒有做出什麼大作品,但我被reject的原因,不是因為實力不夠,而是因為在校成績

      熱情很重要,想一個自己會喜歡的東西,持續的精進和改進,就會進步,幅度連你自己都會嚇到
      就算一開始只是做個簡單的鬧鐘,你也可以再給它加上動畫,加上游戲,什麼都可以,你會更喜歡,更覺得酷,更有成就感
      在改進的過程,就會學更多東西,這邊撿一點,那邊撿一點
      最後,我覺得不用想著一開始就要去哪裡,因為當你厲害之後,想去哪裡就可以去哪裡

      祝你幸運:)

      喜歡

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s