1. 程式人生 > >Python爬蟲實戰之爬取鏈家廣州房價_04鏈家的模擬登入(記錄)

Python爬蟲實戰之爬取鏈家廣州房價_04鏈家的模擬登入(記錄)

問題引入

開始鏈家爬蟲的時候,瞭解到需要實現模擬登入,不登入不能爬取三個月之內的資料,目前暫未驗證這個說法是否正確,這一小節記錄一下利用瀏覽器(IE11)的開發者工具去分析模擬登入網站(鏈家)的內部邏輯過程,花了一個週末的時間,部分問題暫未解決。

思路介紹

利用瀏覽器(IE11)的開發者工具,啟用網路流量捕獲,在除錯之前,先做一些配置上的準備工作:清除舊的cookie和快取,禁用跳轉後清除日誌(Firefox在開發工具的Settings設定中勾上啟用持續日誌)。

鏈家的模擬登入_01清除瀏覽器快取和Cookie

鏈家的模擬登入_02禁用跳轉後清除日誌

首先簡要介紹一下模擬登入網站的基本邏輯,模擬網站登入需要知道,要向什麼url地址,傳送什麼樣的資料,GET請求還是POST請求。GET請求從伺服器請求資料,不需要post data,但是經常需要在url後面加上對應的query parameter,類似?para1=value1&para2=value2之類的形式,本質上有點類似於post data。POST請求需要提供對應的post data,對應工具中的Request Body。而剩下的,是設定傳送請求時的相關引數,包括user-agent等,對應工具中的Request Headers。提交請求後,網站伺服器返回Response Headers和Response Body。其中,還經常涉及到cookie資訊,在傳送前,準備好,傳送給伺服器,伺服器返回的資訊中,往往也包含更新後的cookie值。

總結一下,主要關注點:Request HeadersRequest BodyResponse HeadersResponse BodyCookie

開啟IE11後,調出工具,切換到網路介面,開啟鏈家,過濾HTML請求,可以看到,頁面跳轉到http://gz.lianjia.com/,伺服器返回的Response Headers裡面設定了一些cookie,如lianjia_ssidlianjia_uuid

鏈家的模擬登入_03開啟www.lianjia.com

鏈家的模擬登入_04開啟gz.lianjia.com

點選登入,然後輸入使用者名稱和密碼,正常登入。

找到登入網站所涉及的最核心的地址,對於此,我們可以通過搜尋在哪裡傳送了我們的密碼。可以看到,和我們密碼相關的url地址為

https://passport.lianjia.com/cas/login。即以後如果寫程式碼,所要訪問的url地址,就是這個地址了。

鏈家的模擬登入_05登入postdata

分析所提交的資料(post data)中的引數和值,這就是模擬網站登入的核心資料了,是在寫程式碼時,對於url=https://passport.lianjia.com/cas/login提交POST請求時,要傳送的一些引數和值。

username=XXXXXXXXXXX
password=XXXXXXXXXX
verifycode=
service=http%3A%2F%2Fgz.lianjia.com%2F
isajax=true
code=
lt=LT-99999
-9HQFRxGdmePMdsCSnTeH9h2ne26uQbnWqN2

鏈家的模擬登入_06lt值

分析Cookie,在最核心的地址https://passport.lianjia.com/cas/login的Request Headers中,lianjia_ssidlianjia_uuidJSESSIONID,其中lianjia_ssidlianjia_uuid通過先訪問其他頁面獲取,現在接著去找名為JSESSIONID的Cookie,是從哪裡來的,所以,能想到的,就是先去搜索JSESSIONID,搜尋出來的第一個url地址是https://passport.lianjia.com/cas/prelogin/loginTicket?。很明顯,其就是我們所期望的,因為其中的JSESSIONID是通過Set-Cookie所獲得的,是訪問伺服器的某個地址https://passport.lianjia.com/cas/prelogin/loginTicket?,然後伺服器所返回的Cookie值。

鏈家的模擬登入_07登入Cookie

鏈家的模擬登入_08JSESSIONID

而對於模擬登入網站中,所涉及的其他Cookie、其他引數的值,可參考上述的邏輯,去一點點分析,找到最終的某個值的來源,然後才能用程式模擬。

總結模擬登入鏈家的基本流程

至此,對於想要模擬登入鏈家的內部邏輯過程,基本上清楚了。

待解決問題

在通過Python實現的時候,利用如上的流程,發現實際上行不通,登入失敗。這裡提出幾個未解決的問題。

如何驗證模擬登入網站已成功了呢?

按理,在通過最後一步訪問地址為https://passport.lianjia.com/cas/login時,帶上賬號、密碼、提取的lt值,已獲取JSESSIONID值的情況下,通過返回的html程式碼或cookie值,是可以判斷模擬登入網站已成功的,然而在進一步分析資料來源的時候,發現有一個lianjia_token在登入後的頁面經常出現,不知在模擬登入過程中是否需要用到?是否需要獲取到lianjia_token才算成功?也不知是如何得到的?和JS指令碼是否有關係?

鏈家的模擬登入_09登入成功html

鏈家的模擬登入_10登入成功Cookie

鏈家的模擬登入_11lianjia_token

微信公眾號「資料分析」,分享資料科學家的自我修養,既然遇見,不如一起成長。

資料分析

相關推薦

Python爬蟲實戰廣州房價_04模擬登入(記錄)

問題引入 開始鏈家爬蟲的時候,瞭解到需要實現模擬登入,不登入不能爬取三個月之內的資料,目前暫未驗證這個說法是否正確,這一小節記錄一下利用瀏覽器(IE11)的開發者工具去分析模擬登入網站(鏈家)的內部邏輯過程,花了一個週末的時間,部分問題暫未解決。 思路介

Python爬蟲實戰B站番劇資訊(詳細過程)

目標:爬取b站番劇最近更新 輸出格式:名字+播放量+簡介 那麼開始擼吧~ 用到的類庫: requests:網路請求 pyquery:解析xml文件,像使用jquery一樣簡單哦~ 1.分析頁面佈局,找到需要爬取的內

python 爬蟲實戰4 淘寶MM照片

寫真 換行符 rip 多行 get sts tool -o true 本篇目標 抓取淘寶MM的姓名,頭像,年齡 抓取每一個MM的資料簡介以及寫真圖片 把每一個MM的寫真圖片按照文件夾保存到本地 熟悉文件保存的過程 1.URL的格式 在這裏我們用到的URL是 http:/

Python 爬蟲入門妹子圖

Python 爬蟲入門之爬取妹子圖 來源:李英傑  連結: https://segmentfault.com/a/1190000015798452   聽說你寫程式碼沒動力?本文就給你動力,爬取妹子圖。如果這也沒動力那就沒救了。   GitHub 地址:&

python爬蟲學習全國各省市縣級城市郵政編碼

例項需求:運用python語言在http://www.ip138.com/post/網站爬取全國各個省市縣級城市的郵政編碼,並且儲存在excel檔案中 例項環境:python3.7       requests庫(內建的python庫,無需手動安裝)       xlwt庫(需要自己手動安裝) 例項網站:

python爬蟲入門小說.md

新手教學:用Python爬取小說 我們在學習Python之餘總想著讓其更具趣味性,可以更好地學習。下面我將講解如何去從網站中爬取我們想看的小說。讓我們枯燥無聊的學習生涯稍微多些趣味。 需要只是一點點對requests庫、Beautiful庫及python基礎知識

python爬蟲例項智聯招聘資料

這是作者的處女作,輕點噴。。。。        實習在公司時領導要求學習python,python的爬蟲作為入門來說是十分友好的,話不多說,開始進入正題。       主要是爬去智聯的崗位資訊進行對比分析出java和python的趨勢,爬取欄位:工作地點,薪資範圍,要求學歷,

[python3.6]爬蟲實戰淘女郎圖片

原博主地址:http://cuiqingcai.com/1001.html 原博是python2.7寫的,並且隨著淘寶程式碼的改版,原博爬蟲已經不可用。 參考 http://minstrel.top/TaoBaoMM 這位博主跟我一樣最近正在學習爬蟲。 1 定個小目標 l

Python爬蟲實戰(3)-豆瓣音樂Top250資料(超詳細)

前言 首先我們先來回憶一下上兩篇爬蟲實戰文章: 第一篇:講到了requests和bs4和一些網頁基本操作。 第二篇:用到了正則表示式-re模組 今天我們用lxml庫和xpath語法來爬蟲實戰。 1.安裝lxml庫 window:直接用pip去

python3 爬蟲實戰網易新聞APP端

(一)使用工具 這裡使用了火狐瀏覽器的user-agent外掛,不懂的可以點這裡火狐外掛使用 (二)爬蟲操作步驟: 百度 網易新聞並選擇 步驟一: 步驟二: 步驟三: 步驟四: 最後一步: 注意點: (1

Python爬蟲實戰淘寶MM照片(一)

背景   Python爬蟲系列教程的一次實戰,然而淘寶進行過頁面改版,現在已經沒有淘寶MM這個版面,取而代之的是淘女郎。改版後,頁面是使用JS渲染的,並不能直接通過url來切換頁碼。該系列教程後續講到

python 爬蟲實戰專案--京東商品資訊(價格、優惠、排名、好評率等)

                                                利用splash爬取京東商品資訊一、環境window7python3.5pycharmscrapyscrapy-splashMySQL二、簡介    為了體驗scrapy-spla

python爬蟲系列百度文庫(一)

一、什麼是selenium 在爬取百度文庫的過程中,我們需要使用到一個工具selenium(瀏覽器自動測試框架),selenium是一個用於web應用程式測試的工具,它可以測試直接執行在瀏覽器中,就像我們平時用瀏覽器上網一樣,支援IE(7,8,9,10,11),firefo

Python爬蟲實戰(6)-QQ空間好友說說並生成詞雲(超詳細)

前言 先看效果圖: TXT檔案: 如果想生成特定圖片樣式的詞雲圖,可以直接訪問下面這篇文章學一下: https://mp.weixin.qq.com/s/FUwQ4jZu6KMkjRvEG3UfGw 前幾天我們陸陸續續的講了Python如何生成

python爬蟲練習豆瓣讀書所有標籤下的書籍資訊

第一步,爬取所有圖書標籤及分類 到達圖書標籤頁,分類瀏覽,第一步需要爬取所有分類及其分類下的所有標籤 並用dict儲存 需要解析的內容 1.bs4解析 import requests from bs4 import Beau

Python爬蟲項目--熱門城市新房

聲明 rules nal logging 命令行 -- new exec 狀態 本次實戰是利用爬蟲爬取鏈家的新房(聲明: 內容僅用於學習交流, 請勿用作商業用途) 環境 win8, python 3.7, pycharm 正文 1. 目標網站分析 通過分析, 找出相關url

Python的scrapy房價資訊並儲存到本地

因為有在北京租房的打算,於是上網瀏覽了一下鏈家網站的房價,想將他們爬取下來,並儲存到本地。 先看鏈家網的原始碼。。房價資訊 都儲存在 ul 下的li 裡面 ​   爬蟲結構: ​ 其中封裝了一個數據庫處理模組,還有一個user-agent池。。   先看mylian

Python的scrapy房價信息並保存到本地

width gif pat lse idt ext tst maximum spa 因為有在北京租房的打算,於是上網瀏覽了一下鏈家網站的房價,想將他們爬取下來,並保存到本地。 先看鏈家網的源碼。。房價信息 都保存在 ul 下的li 裏面 ? 爬蟲結構: ? 其中封裝了一

Python爬蟲實戰Requests+正則表示式貓眼電影Top100

import requests from requests.exceptions import RequestException import re import json # from multiprocessing import Pool # 測試了下 這裡需要自己新增頭部 否則得不到網頁 hea

Python3[爬蟲實戰] scrapy汽車全站連結存json檔案

昨晚晚上一不小心學習了崔慶才,崔大神的部落格,試著嘗試一下爬取一個網站的全部內容,福利吧網站現在已經找不到了,然後一不小心逛到了汽車之家 (http://www.autohome.com.cn/beijing/) 很喜歡這個網站,女人都喜歡車,更何況男人呢。(