python-新浪爬蟲(chóng)之模擬登錄

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

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

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

Paste_Image.png

1.利用用戶(hù)id

首先介紹一種最簡(jiǎn)單的方式跳過(guò)登錄界限,針對(duì)是爬取特定用戶(hù)的信息,僅需加上需爬取用戶(hù)id即可

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


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

Paste_Image.png

利用cookie

當(dāng)你登錄一個(gè)網(wǎng)站后,便會(huì)產(chǎn)生對(duì)應(yīng)的cookie,cookie是讓瀏覽器知道你曾經(jīng)登錄過(guò),所以當(dāng)你訪(fǎng)問(wèn)該站點(diǎn)的其它頁(yè)面便不用再進(jìn)行登錄操作,另外,并且當(dāng)你再次訪(fǎng)問(wèn)該網(wǎng)站也無(wú)需進(jìn)行登錄。所以在進(jìn)行爬蟲(chóng)操作時(shí),將cookie加入你的請(qǐng)求的標(biāo)題頭即可。
獲取cookie有如下方法,第一種直接在開(kāi)發(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) #用戶(hù)名   
    elem_pwd = driver.find_element_by_id("loginPassword")  
    elem_pwd.send_keys(password)  #密碼     
    time.sleep(5)            #sleep這個(gè)習(xí)慣其實(shí)不是很好,最好使用之前提過(guò)的顯式等待
    elem_sub = driver.find_element_by_id("loginAction")  
    elem_sub.click()              #點(diǎn)擊登陸  
    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)過(guò)處理后的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里之后隨請(qǐng)求一起發(fā)送,就可以得到登錄后的頁(yè)面
    index_url = 'http://weibo.cn/ofobike?page=1'
    request = urllib2.Request(url = index_url, headers = headers)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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

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