python-新浪爬蟲之模擬登錄

好了,現(xiàn)在講述針對Ajax異步請求內(nèi)容的爬蟲實例,以新浪微博為例。
首先,新浪微博與前面講述的兩個網(wǎng)站不同的是,需登錄才能獲取內(nèi)容,否則只能看到幾條微博。

正題,模擬登錄的幾種方式

這里爬取的是新浪微博手機端網(wǎng)站,也就是m站,輸入http://m/weibo.cn,
你會看到如下界面,需要登錄后才能看到界面

Paste_Image.png

1.利用用戶id

首先介紹一種最簡單的方式跳過登錄界限,針對是爬取特定用戶的信息,僅需加上需爬取用戶id即可

如: http://m.weibo.cn/u/12337777 12337777為用戶id,這里是數(shù)字是隨意寫的,可以加上自己的id,用戶id 可自行登錄后 ,在開發(fā)者工具網(wǎng)絡(luò)中下圖X-Log-Uid中后面的那串?dāng)?shù)字就是你的id


同理,也可以看見你關(guān)注用戶的id,進(jìn)入你關(guān)注用戶的界面,打開開發(fā)者工具,重新載入一次界面,可在XHR中看到返回為json的請求,打開響應(yīng),可看到各項參數(shù)。

Paste_Image.png

利用cookie

當(dāng)你登錄一個網(wǎng)站后,便會產(chǎn)生對應(yīng)的cookie,cookie是讓瀏覽器知道你曾經(jīng)登錄過,所以當(dāng)你訪問該站點的其它頁面便不用再進(jìn)行登錄操作,另外,并且當(dāng)你再次訪問該網(wǎng)站也無需進(jìn)行登錄。所以在進(jìn)行爬蟲操作時,將cookie加入你的請求的標(biāo)題頭即可。
獲取cookie有如下方法,第一種直接在開發(fā)者工具中找

Paste_Image.png

第二種方式可利用之前提到的selenium,模擬登錄之后獲取cookie

    driver.get("https://passport.weibo.cn/signin/login?") 
    time.sleep(5)
    elem_user = driver.find_element_by_id("loginName") 
    elem_user.send_keys(username) #用戶名   
    elem_pwd = driver.find_element_by_id("loginPassword")  
    elem_pwd.send_keys(password)  #密碼     
    time.sleep(5)            #sleep這個習(xí)慣其實不是很好,最好使用之前提過的顯式等待
    elem_sub = driver.find_element_by_id("loginAction")  
    elem_sub.click()              #點擊登陸  
    time.sleep(2)
    cookies = driver.get_cookies() #獲取cookie
    cookie = [item["name"] + "=" + item["value"] for item in cookies]
    cookiestr = ';'.join(item for item in cookie) #處理cookie使其格式與標(biāo)題頭中要求一致

于是,經(jīng)過處理后的cookie就和上一圖片中cookie后面的值一樣啦。
獲取了cookie之后怎么使用呢?

    user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0'
    headers = { 'User-Agent' : user_agent , 'cookie': cookies}##把得到的cookie加在header里之后隨請求一起發(fā)送,就可以得到登錄后的頁面
    index_url = 'http://weibo.cn/ofobike?page=1'
    request = urllib2.Request(url = index_url, headers = headers)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評論 25 709
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡稱cookie)是網(wǎng)...
    留七七閱讀 18,378評論 2 71
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • 上色砸了
    shykawah閱讀 381評論 0 1
  • 許你孤獨,愿你一生不為情而困。 許你偽裝,愿你一世不為傷而淚。 許你殘忍,愿你一生不為人而傷。 許你懶惰,愿你一世...
    缺葉甫央閱讀 181評論 0 1

友情鏈接更多精彩內(nèi)容