成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

14、web爬蟲講解2—Scrapy框架爬蟲—豆瓣登錄與利用打碼接口實(shí)現(xiàn)自動(dòng)識(shí)別驗(yàn)證碼

wemall / 1537人閱讀

摘要:登錄開發(fā)者后臺(tái)我的軟件獲得軟件軟件密鑰注意這里是普通會(huì)員賬號(hào),不是開發(fā)者賬號(hào),注冊(cè)地址開發(fā)者可以聯(lián)系客服領(lǐng)取免費(fèi)調(diào)試題分請(qǐng)先設(shè)置用戶名密碼一鍵識(shí)別函數(shù)正在一鍵識(shí)別例表示位字母數(shù)字,不同類型收費(fèi)不同。請(qǐng)準(zhǔn)確填寫,否則影響識(shí)別率。

【百度云搜索:http://www.bdyss.cn】
【搜網(wǎng)盤:http://www.swpan.cn】

打碼接口文件

# -*- coding: cp936 -*-

import sys
import os
from ctypes import *

# 下載接口放目錄 http://www.yundama.com/apidoc/YDM_SDK.html
# 錯(cuò)誤代碼請(qǐng)查詢 http://www.yundama.com/apidoc/YDM_ErrorCode.html
# 所有函數(shù)請(qǐng)查詢 http://www.yundama.com/apidoc

print(">>>正在初始化...")

YDMApi = windll.LoadLibrary("H:/py/16/adc/adc/yamzhm/yundamaAPI-x64")

# 1. http://www.yundama.com/index/reg/developer 注冊(cè)開發(fā)者賬號(hào)
# 2. http://www.yundama.com/developer/myapp 添加新軟件
# 3. 使用添加的軟件ID和密鑰進(jìn)行開發(fā),享受豐厚分成

appId = 3818   # 軟件ID,開發(fā)者分成必要參數(shù)。登錄開發(fā)者后臺(tái)【我的軟件】獲得!
appKey = b"6ff56e09e89fffe45c14abe624af9456"     # 軟件密鑰,開發(fā)者分成必要參數(shù)。登錄開發(fā)者后臺(tái)【我的軟件】獲得!

# print("軟件ID:%d
軟件密鑰:%s" % (appId, appKey))

# 注意這里是普通會(huì)員賬號(hào),不是開發(fā)者賬號(hào),注冊(cè)地址 http://www.yundama.com/index/reg/user
# 開發(fā)者可以聯(lián)系客服領(lǐng)取免費(fèi)調(diào)試題分

username = b"adc8868"
password = b"adc279819"

if username == b"test":
    exit("
>>>請(qǐng)先設(shè)置用戶名密碼")
    
####################### 一鍵識(shí)別函數(shù) YDM_EasyDecodeByPath #######################

# print("
>>>正在一鍵識(shí)別...")
#
# # 例:1004表示4位字母數(shù)字,不同類型收費(fèi)不同。請(qǐng)準(zhǔn)確填寫,否則影響識(shí)別率。在此查詢所有類型 http://www.yundama.com/price.html
# codetype = 1004
#
# # 分配30個(gè)字節(jié)存放識(shí)別結(jié)果
# result = c_char_p(b"                              ")
#
# # 識(shí)別超時(shí)時(shí)間 單位:秒
# timeout = 60
#
# # 驗(yàn)證碼文件路徑
# filename = b"H:/py/16/adc/adc/yamzhm/yan_zhe_nma.jpg"
#
# # 一鍵識(shí)別函數(shù),無需調(diào)用 YDM_SetAppInfo 和 YDM_Login,適合腳本調(diào)用
# captchaId = YDMApi.YDM_EasyDecodeByPath(username, password, appId, appKey, filename, codetype, timeout, result)
#
# print("一鍵識(shí)別:驗(yàn)證碼ID:%d,識(shí)別結(jié)果:%s" % (captchaId, result.value))

################################################################################


########################## 普通識(shí)別函數(shù) YDM_DecodeByPath #########################



# print("
>>>正在登陸...")

# 第一步:初始化云打碼,只需調(diào)用一次即可
YDMApi.YDM_SetAppInfo(appId, appKey)

# 第二步:登陸云打碼賬號(hào),只需調(diào)用一次即可
uid = YDMApi.YDM_Login(username, password)

if uid > 0:

    # print(">>>正在獲取余額...")
    
    # 查詢賬號(hào)余額,按需要調(diào)用
    balance = YDMApi.YDM_GetBalance(username, password)

    print("登陸成功,用戶名:%s,剩余題分:%d" % (username, balance))

    print("
>>>正在普通識(shí)別...")

    # 第三步:開始識(shí)別

    # 例:1004表示4位字母數(shù)字,不同類型收費(fèi)不同。請(qǐng)準(zhǔn)確填寫,否則影響識(shí)別率。在此查詢所有類型 http://www.yundama.com/price.html
    codetype = 3000

    # 分配30個(gè)字節(jié)存放識(shí)別結(jié)果
    result = c_char_p(b"                              ")

    # 驗(yàn)證碼文件路徑
    filename = b"H:/py/16/adc/adc/yamzhm/yan_zhe_nma.jpg"

    # 普通識(shí)別函數(shù),需先調(diào)用 YDM_SetAppInfo 和 YDM_Login 初始化
    captchaId = YDMApi.YDM_DecodeByPath(filename, codetype, result)

    print("普通識(shí)別:驗(yàn)證碼ID:%d,識(shí)別結(jié)果:%s" % (captchaId, result.value))

else:
    print("登陸失敗,錯(cuò)誤代碼:%d" % uid)

################################################################################

# print("
>>>錯(cuò)誤代碼請(qǐng)查詢 http://www.yundama.com/apidoc/YDM_ErrorCode.html")

# input("
測試完成,按回車鍵結(jié)束...")

實(shí)現(xiàn)文件

# -*- coding: utf-8 -*-
import os
from urllib import request                     #導(dǎo)入request模塊

import scrapy
from scrapy.http import Request,FormRequest


class PachSpider(scrapy.Spider):                            #定義爬蟲類,必須繼承scrapy.Spider
    name = "pach"                                           #設(shè)置爬蟲名稱
    allowed_domains = ["douban.com"]                    #爬取域名
    # start_urls = [""]                                     #爬取網(wǎng)址,只適于不需要登錄的請(qǐng)求,因?yàn)闆]法設(shè)置cookie等信息

    header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"}  #設(shè)置瀏覽器用戶代理

    def start_requests(self):
        """第一次請(qǐng)求一下登錄頁面,設(shè)置開啟cookie使其得到cookie,設(shè)置回調(diào)函數(shù)"""
        print("第一次請(qǐng)求頁面獲取Cookies.........!")
        return [Request("https://accounts.douban.com/login",meta={"cookiejar":1},callback=self.parse,headers=self.header)]


    def parse(self, response):
        # 響應(yīng)Cookies
        Cookie1 = response.headers.getlist("Set-Cookie")                            #查看一下響應(yīng)Cookie,也就是第一次訪問注冊(cè)頁面時(shí)后臺(tái)寫入瀏覽器的Cookie
        print("后臺(tái)首次寫入的響應(yīng)Cookies:",Cookie1)

        #判斷是否出現(xiàn)驗(yàn)證碼
        yzhm = response.xpath("http://img[@id="captcha_image"]/@src").extract()
        if len(yzhm) > 0:
            print("出現(xiàn)驗(yàn)證碼,請(qǐng)輸入驗(yàn)證碼")
            print("驗(yàn)證碼圖片地址:",yzhm)
            #將驗(yàn)證碼圖片保存到本地
            file_path = os.path.join(os.getcwd() + "/adc/yamzhm/yan_zhe_nma.jpg")   # 拼接圖片保存路徑
            print(file_path)
            request.urlretrieve(yzhm[0], file_path)                             # 將圖片保存到本地,參數(shù)1獲取到的src,參數(shù)2保存路徑

            #使用在線打碼,自動(dòng)識(shí)別驗(yàn)證碼
            from adc.yamzhm import YDMPython3                                   #導(dǎo)入打碼模塊
            yan_zhen_ma = str(YDMPython3.result.value,encoding="utf-8")         #接收打碼結(jié)果
            print("寫入驗(yàn)證碼",yan_zhen_ma)

            data = {                                                            # 設(shè)置用戶登錄信息,對(duì)應(yīng)抓包得到字段
                "source": "None",
                "redir": "https://www.douban.com/people/81309370/",
                "form_email": "[email protected]",
                "form_password": "adc279819",
                "login": "登錄",
                "captcha-solution": yan_zhen_ma
            }

            print("第二次post請(qǐng)求攜帶Cookies授權(quán),登錄中........!")

            """第二次用表單post請(qǐng)求,攜帶Cookie、瀏覽器代理、用戶登錄信息,進(jìn)行登錄給Cookie授權(quán)"""
            return [FormRequest.from_response(response,
                                              url="https://accounts.douban.com/login",                        #真實(shí)post地址
                                              meta={"cookiejar":response.meta["cookiejar"]},
                                              headers=self.header,
                                              formdata=data,
                                              callback=self.next,
                                              )]
        else:
            data = {  # 設(shè)置用戶登錄信息,對(duì)應(yīng)抓包得到字段
                "source": "None",
                "redir": "https://www.douban.com/people/81309370/",
                "form_email": "[email protected]",
                "form_password": "adc279819",
                "login": "登錄",
            }

            print("第二次post請(qǐng)求攜帶Cookies授權(quán),登錄中........!")

            """第二次用表單post請(qǐng)求,攜帶Cookie、瀏覽器代理、用戶登錄信息,進(jìn)行登錄給Cookie授權(quán)"""
            return [FormRequest.from_response(response,
                                              url="https://accounts.douban.com/login",  # 真實(shí)post地址
                                              meta={"cookiejar": response.meta["cookiejar"]},
                                              headers=self.header,
                                              formdata=data,
                                              callback=self.next,
                                              )]



    def next(self,response):
        # 請(qǐng)求Cookie
        Cookie2 = response.request.headers.getlist("Cookie")
        print("登錄時(shí)攜帶請(qǐng)求的Cookies:",Cookie2)

        dlujieg = response.xpath("/html/head/title/text()").extract()
        if dlujieg:
            print("登錄響應(yīng)結(jié)果:",dlujieg)
        else:
            jieg = response.body.decode("utf-8")   #登錄后可以查看一下登錄響應(yīng)信息
            print("登錄響應(yīng)結(jié)果:",jieg)

        print("第三次請(qǐng)求攜帶授權(quán)Cookie,請(qǐng)求需要登錄才能查看的頁面.........!")
        yield Request("https://www.douban.com/people/81309370/",meta={"cookiejar":True},headers=self.header,callback=self.next2)


    def next2(self,response):
        # 請(qǐng)求Cookie
        Cookie3 = response.request.headers.getlist("Cookie")
        print("查看需要登錄才可以訪問的頁面攜帶Cookies:",Cookie3)

        leir = response.xpath("/html/head/title/text()").extract()  #得到個(gè)人中心頁面
        print("最終內(nèi)容",leir)
        # leir2 = response.xpath("http://div[@class="set-tags"]/a/text()").extract()  # 得到個(gè)人中心頁面
        # print(leir2)

【轉(zhuǎn)載自:http://www.lqkweb.com】

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45067.html

相關(guān)文章

  • 網(wǎng)絡(luò)爬蟲介紹

    摘要:什么是爬蟲網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,是一種自動(dòng)化瀏覽網(wǎng)絡(luò)的程序,或者說是一種網(wǎng)絡(luò)機(jī)器人。 什么是爬蟲 網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,是一種自動(dòng)化瀏覽網(wǎng)絡(luò)的程序,或者說是一種網(wǎng)絡(luò)機(jī)器人。它們被廣泛用于互聯(lián)網(wǎng)搜索引擎或其他類似網(wǎng)站,以獲取或更新這些網(wǎng)站的內(nèi)容和檢索方式。它們可以自動(dòng)采集所有其能夠訪問到的頁面內(nèi)容,以供搜索引擎做進(jìn)一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。簡...

    sf190404 評(píng)論0 收藏0
  • 爬蟲學(xué)習(xí)之基于 Scrapy爬蟲自動(dòng)登錄

    摘要:概述在前面兩篇爬蟲學(xué)習(xí)之基于的網(wǎng)絡(luò)爬蟲和爬蟲學(xué)習(xí)之簡單的網(wǎng)絡(luò)爬蟲文章中我們通過兩個(gè)實(shí)際的案例,采用不同的方式進(jìn)行了內(nèi)容提取。 概述 在前面兩篇(爬蟲學(xué)習(xí)之基于Scrapy的網(wǎng)絡(luò)爬蟲和爬蟲學(xué)習(xí)之簡單的網(wǎng)絡(luò)爬蟲)文章中我們通過兩個(gè)實(shí)際的案例,采用不同的方式進(jìn)行了內(nèi)容提取。我們對(duì)網(wǎng)絡(luò)爬蟲有了一個(gè)比較初級(jí)的認(rèn)識(shí),只要發(fā)起請(qǐng)求獲取響應(yīng)的網(wǎng)頁內(nèi)容,然后對(duì)內(nèi)容進(jìn)行格式化存儲(chǔ)。很多時(shí)候我們抓取到的內(nèi)容...

    Panda 評(píng)論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過一遍Python最基本的知識(shí),比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評(píng)論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評(píng)論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<