­

Scrapy中使用cookie免於驗證登錄和模擬登錄

  • 2019 年 12 月 31 日
  • 筆記

文章目錄

  1. 1. Scrapy中使用cookie免於驗證登錄和模擬登錄
    1. 1.1. 引言
    2. 1.2. cookie提取方法:
    3. 1.3. 補充說明:
    4. 1.4. 使用cookie操作scrapy
      1. 1.4.1. 直接擼程式碼
      2. 1.4.2. 說明
    5. 1.5. 注意
    6. 1.6. 作者說
      1. 1.6.1. 最後歡迎大家看看我的其他scrapy文章

Scrapy中使用cookie免於驗證登錄和模擬登錄

引言

python爬蟲我認為最困難的問題一個是ip代理,另外一個就是模擬登錄了,更操蛋的就是模擬登錄了之後還有驗證碼,真的是不讓人省心,不過既然有了反爬蟲,那麼就有反反爬蟲的策略,這裡就先介紹一個cookie模擬登陸,後續還有seleminum+phantomjs模擬瀏覽器登錄的文章。還不知道cookie是什麼朋友們,可以點擊這裡 cookie提取方法: 打開Google瀏覽器或者火狐瀏覽器,如果是Google瀏覽器的按F12這個鍵就會跳出來瀏覽器控制台,然後點擊Network,之後就是刷新網頁開始抓包了,之後在抓到的頁面中隨便打開一個,就能看到cokie了,但是這裡的cookie並不符合python中的格式,因此需要轉換格式,下面提供了轉換的程式碼

# -*- coding: utf-8 -*-  class transCookie:  def __init__(self, cookie):      self.cookie = cookie  def stringToDict(self):      '''      將從瀏覽器上Copy來的cookie字元串轉化為Scrapy能使用的Dict      :return:      '''      itemDict = {}      items = self.cookie.split(';')      for item in items:          key = item.split('=')[0].replace(' ', '')          value = item.split('=')[1]          itemDict[key] = value      return itemDict  if __name__ == "__main__":  cookie = "你複製的cookie"  trans = transCookie(cookie)  print trans.stringToDict()

補充說明: 只需要將你網頁上的cookie複製到上述程式碼中直接運行就可以了 使用cookie操作scrapy 直接擼程式碼

# -*- coding: utf-8 -*-  import scrapy  from scrapy.conf import settings #從settings文件中導入Cookie,這裡也可以室友from scrapy.conf import settings.COOKIE  class DemoSpider(scrapy.Spider):  name = "demo"  #allowed_domains = ["csdn.com"]  start_urls = ["http://write.blog.csdn.net/postlist"]  cookie = settings['COOKIE']  # 帶著Cookie向網頁發請求  headers = {      'Connection': 'keep - alive',  # 保持鏈接狀態      'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'  }  def start_requests(self):      yield scrapy.Request(url=self.start_urls[0],headers=self.headers,cookies=self.cookie)# 這裡帶著cookie發出請求  def parse(self, response):      print response.body

說明 這裡是scrapy工程目錄下spiders目錄下的主要的解析網頁的py文件相信學過scrapy的應該不會陌生,上述程式碼中的cookie值是放在Settings文件中的,因此使用的時候需要導入,當然你也可以直接將cookie粘貼到這個文件中 注意 雖說這裡使用直接使用cookie可以省去很多麻煩,但是cookie的生命周期特別的短,不過小型的項目足夠使用了,向那些需要爬兩三天甚至幾個月的項目就不適用了,因此在隔一段時間就要重新換cookie的值,雖說有很多麻煩,但是我還是比較喜歡這種方法的,因為可以省去不少腦筋 作者說 本人秉著方便他人的想法才開始寫技術文章的,因為對於自學的人來說想要找到系統的學習教程很困難,這一點我深有體會,我也是在不斷的摸索中才小有所成,如果你們覺得我寫的不錯就幫我推廣一下,讓更多的人看到。另外如果有什麼錯誤的地方也要及時聯繫我,方便我改進,謝謝大家對我的支援。 最後歡迎大家看看我的其他scrapy文章

版權資訊所有者:chenjiabing 如若轉載請標明出處:chenjiabing666.github.io6