1. 程式人生 > >知乎爬蟲之模擬登入

知乎爬蟲之模擬登入

爬蟲簡單的原理就是傳送一個請求到網站的伺服器,伺服器進行響應,然後從伺服器響應的內容解析出我們想要的資料
這裡我們將用requests庫來發送請求(Windows上面在控制檯通過pip3 install requests 進行安裝),
解析可以用beautifulsoup庫(用 pip3 install beautifulsoup安裝),不過在這裡暫時用不到解析,
python版本是3

第一步 分析
使用chrome瀏覽器和火狐瀏覽器都可以,這裡我將使用火狐瀏覽器進行示範。
首先開啟知乎登入頁面,同時按F12開啟開發者工具:
這裡寫圖片描述

然後我們在這裡需要對瀏覽器進行一下設定,勾選啟用快取日誌,不然登入的時候你會發現傳送登入的請求連結剛開始一秒左右還能看見,載入一會後就消失了:這裡寫圖片描述

好了,輸入賬號密碼然後點選登入,神奇的一幕出現了:
這裡寫圖片描述
這個phone_num檔案就是我們想要找的,點選可以檢視到請求的網址是https://www.zhihu.com/login/phone_num和請求頭,請求頭的資訊將會被用到來構建我們程式碼中的請求頭,然後我們再看看引數,這是我們傳送請求是傳給網站伺服器的資料,待會也要用到,這裡我就不點開引數了給大家展示了,因為這裡有我自己的賬號資訊
登入成功會響應登入成功
好了,分析過程完了,我們開始寫程式碼了

第二步 寫程式碼

# -*- coding:utf-8 -*-
__author__="weikairen"

import  requests
from bs4 import  BeautifulSoup

URL='https://www.zhihu.com/login/phone_num'
User_Agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36X-Requested-With:XMLHttpRequest' headers = {'user-agent': User_Agent} data={ '_xsrf':'a626e45048da76595564ec6607fa0c9c', 'password':'*******', 'remember_me':'true', 'phone_num'
:'********' } #requests_session = requests.session() #response = requests_session.post(url=URL, headers=headers,data=data) # 這種和下面一行的方法是一樣的,這使用session方法是因為可以儲存cookie # 這裡你可以先知道有這麼個用法 response=requests.post(url=URL, headers=headers,data=data) print(response.json()['msg'])

好了,執行程式你就會在控制檯看見登入成功的字樣。
不過有時候你過於頻繁的登入,知乎就會讓你輸入驗證碼,驗證碼怎麼搞呢?不用怕,還是箱上面那樣在瀏覽器開發者工具裡面找驗證碼檔案,然後檢視它的請求URL,這個URL是以時間戳來構造的,我昨天還要輸入驗證碼,今天又不用輸入了,所以這裡我就不再截圖分析了,參考下面的程式碼

# -*- coding:utf-8 -*-
__author__="weikairen"

import  requests
from bs4 import  BeautifulSoup
import  time

BASE_URL='https://www.zhihu.com/'
LOGIN_URL=BASE_URL+'login/phone_num'
CAPTCHA_URL=BASE_URL+'captcha.gif?r='+str(int(time.time())*1000)+'&type=login'


def login():
    headers={
        'host':'www.zhihu.com',
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0',
        'referer':"https://www.zhihu.com/",
        'X - Requested - With': "XMLHttpRequest"
    }                                                 #構造請求頭,講它偽裝成為瀏覽器
    captcha_content=requests.get(CAPTCHA_URL,headers=headers).content
    with open('C:\cap.gif','wb') as cap:       #將驗證碼圖片下載下來儲存到C盤的根目錄下面
        cap.write(captcha_content)
    captcha=input('請輸入驗證碼: ')
    data={
        '_xsrf': "94b6a3f4ba711971716bd8b863d9c91c",
        'password': "********",
        'captcha_type': "cn",
        'remember_me': "true",
        'phone_num': "********"
    }
    session = requests.session()                                      #這裡使用了session方法是因為可以自動儲存cookie在session中
    response=session.post(LOGIN_URL,data=data,headers=headers)
    print(response.json()['msg'])

login()


然後控制檯會列印登入成功,模擬登入就完成啦。。

每天一小步。。

相關推薦

爬蟲模擬登入

爬蟲簡單的原理就是傳送一個請求到網站的伺服器,伺服器進行響應,然後從伺服器響應的內容解析出我們想要的資料 這裡我們將用requests庫來發送請求(Windows上面在控制檯通過pip3 install requests 進行安裝), 解析可以用beauti

python--python3爬蟲模擬登入

程式碼在python3環境下測試通過: from bs4 import BeautifulSoup import requests url = 'http://www.zhihu.com' login_url = url+'/login/email' captcha_

Python爬蟲模擬登入豆瓣獲取最近看過的電影

哈哈哈,模擬登入成功啦啦啦啦啦~~~~~ 重要的事本來要說三遍,不過還是算了== 先上效果圖: 眾所周知,很多網站都設定了登入之後才能獲取檢視頁面的權利,因此模擬登入成了爬取資訊的第一步,這一步

爬蟲爬取專欄資訊

接著昨天的模擬登陸,今天來爬取一下專欄資訊 我們將對專欄https://zhuanlan.zhihu.com/Entertainmentlaw進行抓取 首先還是進行抓包分析,可以發現這裡有我們想要的專欄的名稱,作者,關注人數等資訊 然後我們看一下訊息頭

轉載-Python爬蟲模擬登入總結

備註:python 2.7.9,32位 有些網站需要登入後才能爬取所需要的資訊,此時可以設計爬蟲進行模擬登入,原理是利用瀏覽器cookie。 一、瀏覽器訪問伺服器的過程:     (1)瀏覽器(客戶端)向Web伺服器發出一個HTTP請求(Http r

零基礎寫Java爬蟲準備工作

開篇我們還是和原來一樣,講一講做爬蟲的思路以及需要準備的知識吧,高手們請直接忽略。 首先我們來縷一縷思緒,想想到底要做什麼,列個簡單的需求。 需求如下: 2.下載指定的頁面內容,包括:今日最熱,本月最熱,編輯推薦 3.下載指定分類中的所有問答,比如:投資,程式設計,掛科 4.下載指定回答者的所有回答 5.

零基礎寫Java爬蟲進階篇

說到爬蟲,使用Java本身自帶的URLConnection可以實現一些基本的抓取頁面的功能,但是對於一些比較高階的功能,比如重定向的處理,HTML標記的去除,僅僅使用URLConnection還是不夠的。 在這裡我們可以使用HttpClient這個第三方jar包。 接下來我們使用HttpClient簡單的寫

Python爬蟲模擬登陸

在chrome瀏覽器下抓取登陸過程的包(注意把Preserve log勾上): 表單的結構主要包括_xsrf, password, phone_num 我們要找到_xsrf的值,重新載入zhihu.

JAVA爬蟲初識模擬登入

在設計一個爬蟲的時候,在第一步對網站的大概瀏覽瞭解情況是會發現有些網站在訪問之前是需要登入的,否則是無法訪問到有我們需要的資料的子頁面的,這個時候就要在之前的基礎上增加一個模擬登入的步驟。 其實模擬登入的步驟跟之前所說的httpclient基本是一樣的,只不過

python 爬蟲模擬登陸

import requests def run(): url = "http://jira.1handcar.com:14001/secure/BrowseProjects.jspa" headers = {'Host':'jira.1handcar.com:14001'

爬蟲(scrapy預設配置下單機1小時可爬取60多萬條資料)

前言: 學了爬蟲差不多快一年了,然而由於專案原因,這還是第一次發爬蟲的部落格,在學習的過程中,受益最大的就是看了九茶的微博爬蟲吧,所以在這裡特別鳴謝。 他的程式碼裡涉及了很多:自動化技術、模擬登入、分散式、redis、mongodb等都有涉及,而且還講了程式碼的

Python3爬蟲模擬登陸

爬取一些不需要登陸的網址操作已經試過了,這次來用Python嘗試需要登陸的網址,來利用cookie模擬登陸 我用的是火狐瀏覽器自帶的F12開發者工具,開啟網址輸入賬號,密碼,登陸,如圖 可以看到捕捉到很多post和get請求,第一個post請求就是我們提交賬號和密

豆瓣爬蟲模擬登入(可直接在cmd執行)

按[F12]開啟網頁原始碼 - 按[F8]尋找redir - 可將redir的value值設為你想跳轉的頁面。 手動登入後,跳轉到賬戶介面,如下: 按[F12],開啟如下介面: (1)檢視[Network] - [login] - [From Data]

VUE DEMO 模擬登入 個人中心頁面之間資料傳值

lalala~ 先上程式碼吧: login.html <!DOCTYPE html> <html lang="en"> <head> <meta

Python爬蟲自動登入與驗證碼識別

轉自:http://blog.csdn.net/tobacco5648/article/details/50640691 在用爬蟲爬取網站資料時,有些站點的一些關鍵資料的獲取需要使用賬號登入,這裡可以使用requests傳送登入請求,並用Session物件來自動處理相關

一個簡單的分散式的爬蟲

一個分散式的網路爬蟲,用於抓取知乎的使用者詳細資訊,包括使用者名稱、行業、位置、畢業院校、介紹、關注者、關注人等。 原理 主機 負責分發任務。從起始位置開始,將當前使用者的所有關注者提取出來,並壓入Redis任務佇列,然後隨機的進入到其中一個關注

爬蟲入門到精通-headers的詳細講解(模擬登入

直接開始案例吧。 本次我們實現如何模擬登陸知乎。 1.抓包 首先開啟知乎登入頁 知乎 - 與世界分享你的知識、經驗和見解 注意開啟開發者工具後點擊“preserve log”,密碼記得故意輸入錯誤,然後點選登入   我們很簡單的就找到了 我們需要的請

Python 爬蟲-模擬登入-爬取拉勾網職位資訊

用Python寫爬蟲是很方便的,最近看了xlzd.me的文章,他的文章寫的很到位,提供了很好的思路。因為他的文章部分程式碼省略了。下面是基於他的文章的三個程式碼片段: 基於Python3,Python2的話需要修改下input輸入函式和print的用法。 爬取豆瓣電影top250 爬取拉勾網職位資訊 模擬

[Python]網路爬蟲(三):使用cookiejar管理cookie 以及 模擬登入

大家好哈,上一節我們研究了一下爬蟲的異常處理問題,那麼接下來我們一起來看一下Cookie的使用。 為什麼要使用Cookie呢? Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密) 比如說有些網站需要登入後才

第一個爬蟲-使用者關係登入

這是第一個爬蟲,所以由很多地方還需要改進,暫時先總結一下自己的小心得。 登入 因為想把自己的賬號作為一個seed,所以session保持登入cookies,順便練習一下驗證碼。 1.使用chorme F12 檢視networks, 輸入賬戶 點選登入