第三百三十三節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy類比瀏覽器登入—擷取Scrapy架構Cookies

來源:互聯網
上載者:User

標籤:返回   響應   user   port   logs   提交   agent   發送請求   一個   

第三百三十三節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy類比瀏覽器登入

類比瀏覽器登入

start_requests()方法,可以返回一個請求給爬蟲的起始網站,這個返回的請求相當於start_urls,start_requests()返回的請求會替代start_urls裡的請求

Request()get請求,可以設定,url、cookie、回呼函數

FormRequest.from_response()表單post提交,第一個必須參數,上一次響應cookie的response對象,其他參數,cookie、url、表單內容等

yield Request()可以將一個新的請求返回給爬蟲執行


在發送請求時cookie的操作,
meta={‘cookiejar‘:1}表示開啟cookie記錄,首次請求時寫在Request()裡
meta={‘cookiejar‘:response.meta[‘cookiejar‘]}表示使用上一次response的cookie,寫在FormRequest.from_response()裡post授權
meta={‘cookiejar‘:True}表示使用授權後的cookie訪問需要登入查看的頁面

 

擷取Scrapy架構Cookies

請求Cookie
Cookie = response.request.headers.getlist(‘Cookie‘)
print(Cookie)

響應Cookie
Cookie2 = response.headers.getlist(‘Set-Cookie‘)
print(Cookie2)

# -*- coding: utf-8 -*-import scrapyfrom scrapy.http import Request,FormRequestclass PachSpider(scrapy.Spider):                            #定義爬蟲類,必須繼承scrapy.Spider    name = ‘pach‘                                           #設定爬蟲名稱    allowed_domains = [‘edu.iqianyue.com‘]                  #爬取網域名稱    # start_urls = [‘http://edu.iqianyue.com/index_user_login.html‘]     #爬取網址,只適於不需要登入的請求,因為沒法設定cookie等資訊    header = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0‘}  #設定瀏覽器使用者代理程式    def start_requests(self):       #用start_requests()方法,代替start_urls        """第一次請求一下登入頁面,設定開啟cookie使其得到cookie,設定回呼函數"""        return [Request(‘http://edu.iqianyue.com/index_user_login.html‘,meta={‘cookiejar‘:1},callback=self.parse)]    def parse(self, response):     #parse回呼函數        data = {                    #設定使用者登入資訊,對應抓包得到欄位            ‘number‘:‘adc8868‘,            ‘passwd‘:‘279819‘,            ‘submit‘:‘‘            }        # 響應Cookie        Cookie1 = response.headers.getlist(‘Set-Cookie‘)   #查看一下響應Cookie,也就是第一次訪問註冊頁面時後台寫入瀏覽器的Cookie        print(Cookie1)        print(‘登入中‘)        """第二次用表單post請求,攜帶Cookie、瀏覽器代理、使用者登入資訊,進行登入給Cookie授權"""        return [FormRequest.from_response(response,                                          url=‘http://edu.iqianyue.com/index_user_login‘,   #真實post地址                                          meta={‘cookiejar‘:response.meta[‘cookiejar‘]},                                          headers=self.header,                                          formdata=data,                                          callback=self.next,                                          )]    def next(self,response):        a = response.body.decode("utf-8")   #登入後可以查看一下登入響應資訊        # print(a)        """登入後請求需要登入才能查看的頁面,如個人中心,攜帶授權後的Cookie請求"""        yield Request(‘http://edu.iqianyue.com/index_user_index.html‘,meta={‘cookiejar‘:True},callback=self.next2)    def next2(self,response):        # 請求Cookie        Cookie2 = response.request.headers.getlist(‘Cookie‘)        print(Cookie2)        body = response.body  # 擷取網頁內容位元組類型        unicode_body = response.body_as_unicode()  # 擷取網站內容字串類型        a = response.xpath(‘/html/head/title/text()‘).extract()  #得到個人中心頁面        print(a)

 

 

 

 

 

第三百三十三節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy類比瀏覽器登入—擷取Scrapy架構Cookies

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.