1. 程式人生 > >python爬蟲scrapy框架——人工識別登入知乎倒立文字驗證碼和數字英文驗證碼(2)

python爬蟲scrapy框架——人工識別登入知乎倒立文字驗證碼和數字英文驗證碼(2)

import scrapy
import re
import json


class ZhihuSpider(scrapy.Spider):
    name = 'zhihu'
    allowed_domains = ['www.zhihu.com']
    start_urls = ['https://www.zhihu.com/']

    headers = {
        'HOST': 'www.zhihu.com',
        'Referer': 'https://www.zhihu.com',
        'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8
', } def parse(self, response): pass def parse_detail(self, response): # 爬取文章細節 pass # scrapy開始時先進入start_requests() def start_requests(self): # 為了提取_xsrf:要先訪問知乎的登入頁面,讓scrapy在登入頁面獲取伺服器給我們的資料(_xsrf),再呼叫login return [scrapy.Request('https://www.zhihu.com/#signin
', headers=self.headers, callback=self.login)] def login(self, response): xsrf = '' match_obj = re.match('[\s\S]*name="_xsrf" value="(.*?)"', response.text) if match_obj: xsrf = match_obj.group(1) # 如果提取到了xsrf就進行下面的操作,如果沒xsrf有就沒必要往下做了 if xsrf: post_data
= { 'captcha_type': 'cn', '_xsrf': xsrf, 'phone_num': '13043330319', 'password': 'Wcw19961223', 'captcha': '', } import time captcha_url = 'https://www.zhihu.com/captcha.gif?r=%d&type=login&lang=cn' % (int(time.time() * 1000)) # scrapy會預設把Request的cookie放進去 return scrapy.Request(captcha_url, headers=self.headers, meta={'post_data': post_data}, callback=self.login_after_captcha) def login_after_captcha(self, response): # 儲存並開啟驗證碼 with open('captcha.gif', 'wb') as f: f.write(response.body) f.close() from PIL import Image try: img = Image.open('captcha.gif') img.show() except: pass # 輸入驗證碼 captcha = { 'img_size': [200, 44], 'input_points': [], } points = [[22.796875, 22], [42.796875, 22], [63.796875, 21], [84.796875, 20], [107.796875, 20], [129.796875, 22], [150.796875, 22]] seq = input('請輸入倒立字的位置\n>') for i in seq: captcha['input_points'].append(points[int(i) - 1]) captcha = json.dumps(captcha) post_url = 'https://www.zhihu.com/login/phone_num' post_data = response.meta.get('post_data', {}) post_data['captcha'] = captcha return [scrapy.FormRequest( # 在這裡完成像之前的requests的登入操作,每一個Request如果要做下一步處理都要設定callback url=post_url, formdata=post_data, headers=self.headers, callback=self.check_login, )] def check_login(self, response): # 驗證伺服器的返回資料判斷是否成功 text_json = json.loads(response.text) if 'msg' in text_json and text_json['msg'] == '登入成功': print('登入成功!') for url in self.start_urls: yield scrapy.Request(url, dont_filter=True, headers=self.headers)

相關推薦

python爬蟲scrapy框架——人工識別登入倒立文字驗證數字英文驗證(2)

import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhihu.com'] start_urls = ['http

python爬蟲scrapy框架——人工識別登入倒立文字驗證數字英文驗證

import requests try: import cookielib except: import http.cookiejar as cookielib import re import time def get_xsrf(): # 獲取xsrf code res

python 爬蟲 scrapy框架的使用 一

1 首先 安裝 scrapy :  pip install scrapy 2 用命令建立一個spider工程: scrapy startproject spider5 3 建立一個spider檔案,並指定爬蟲開始的域名: scrapy gensp

python 爬蟲 scrapy框架的使用 一

pytho clas 工程 本地 emp mpi 原理 png 下載 1 首先 安裝 scrapy : pip install scrapy 2 用命令創建一個spider工程: scrapy startproject spider5 3 創建一個s

Python爬蟲scrapy框架Cookie池(微博Cookie池)的使用

下載程式碼Cookie池(這裡主要是微博登入,也可以自己配置置其他的站點網址) 下載安裝過後注意看網頁下面的相關基礎配置和操作!!!!!!!!!!!!! 自己的設定主要有下面幾步: 1、配置其他設定 2、設定使用的瀏覽器 3、設定模擬登陸

Python爬蟲scrapy框架爬取動態網站——scrapy與selenium結合爬取資料

 scrapy框架只能爬取靜態網站。如需爬取動態網站,需要結合著selenium進行js的渲染,才能獲取到動態載入的資料。如何通過selenium請求url,而不再通過下載器Downloader去請求這個url?方法:在request物件通過中介軟體的時候,在中介軟體內部開始

python爬蟲Scrapy框架之中間件

gin 關於 pre ces alt python類 分享 新建 爬蟲 Downloader Middleware處理的過程主要在調度器發送requests請求的時候以及網頁將response結果返回給spider的時候, 所以說下載中間件是結余Scrapy的request

python爬蟲----scrapy框架簡介基礎應用

就是 all 安裝 持久化 數據 whl 執行 編寫 通用 一、什麽是scrapy?   scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架,非常出名,非常強悍。所謂的框架就是一個已經被集成了各種功能(高性能異步下載,隊列,分布式,解析,持久化等)的具有很

如何用Python+人工識別處理倒立漢字驗證

  目前知乎採用了“倒立漢字”驗證碼,如圖所示: 使用者需要點選圖片中所有的倒立漢字才能登陸知乎。   這給Python爬蟲的模擬登入帶來了一定的難度,目前網路上的相關資料針對的都是普通的“英文+數字”驗證碼,針對“倒立漢字”驗證碼的文章較少。而且大家普遍採用的是requ

[Python爬蟲]Scrapy框架爬取bilibili個人資訊

啟動檔案main.py from scrapy.cmdline import execute execute('scrapy crawl bili_gr_xx'.split()) 執行spider下的爬取檔案 # -*- coding: ut

python爬蟲Scrapy框架之增量式爬蟲

obj lib show prop open html back extract hot 一 增量式爬蟲 什麽時候使用增量式爬蟲: 增量式爬蟲:需求 當我們瀏覽一些網站會發現,某些網站定時的會在原有的基礎上更新一些新的數據。如一些電影網站會實時更新最近熱門的電影。那麽,當我

Python爬蟲設定代理IP爬取圖片

本文接著前面兩文中提到的內容來繼續完善我們的Python爬蟲。上文地址:通過Python爬蟲爬取知乎某個問題下的圖片 設定代理的方式很簡單,可以看看這裡Requests的官方文件,這裡也有對應的中文版介紹,點選開啟連結 先簡單說下requests代理的使用,摘自上述提到的文

[Python] [爬蟲] 1.批量政府網站的招投標、中標資訊爬取推送的自動化爬蟲概要——脫離Scrapy框架

  目錄 1.Intro 2.Details 3.Theory 4.Environment and Configuration 5.Automation 6.Conclusion 1.Intro 作為Python的擁蹩,開源支持者,深信Python大

pythonScrapy框架的第一個爬蟲

執行: D:\pycodes\python123demo>scrapy crawl demo scrapy crawl demo 學習筆記: 程式碼: D:\pycodes>scrapy startproject python123demo Ne

Pythonscrapy框架爬蟲專案中加入郵箱通知(爬蟲啟動關閉等資訊以郵件的方式傳送到郵箱)

前面關於傳送郵件的部落格參考:普通郵件部落格——點選開啟連結 帶附件的郵件——點選開啟連結 準備: 1、建立scrapy爬蟲專案 2、程式碼主要是兩部分: 呈上程式碼 第一部分是傳送郵

關於python爬蟲scrapy框架,使用happybase方法連結hbase進行資料上傳操作

如果有叢集先將hbase的叢集啟起來 python程式碼如下 import happybase import MySQLdb #pipelines.py檔案裡面類 覆蓋原有類 Pachong_qcwyPipeline class Pachong_qcwyPipelin

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

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

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

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

Python爬蟲倒立文字驗證登入

引言 本文解析了知乎倒立文字驗證碼的原理,人工識別倒立文字所在位置後組織報文成功登入。 原理 關於登入的基本原理可參考Python爬蟲之模擬知乎登入,只不過這篇文章中登入的驗證碼為“數字英文”模式,而當前登入時是“點選倒立文字”模式,所以主要記錄這部分。

Python爬蟲-嘗試使用人工OCR處理驗證模擬登入

此次是我第一次模擬登入,目標站點是知乎。 剛開始在網上看別人一直在說知乎登入首頁有有倒立的漢字驗證碼,我開啟自己的知乎登入頁面,發現只有賬號和密碼,他們說的倒立的驗證碼去哪了,後面仔細一想我之前登入過知乎,應該在本地存在cookies,然後我將cookies刪