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

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

引言

python爬蟲我認爲最困難的問題一個是ip代理,另一個就是模擬登陸了,更操蛋的就是模擬登陸了以後還有驗證碼,真的是不讓人省心,不過既然有了反爬蟲,那麼就有反反爬蟲的策略,這裏就先介紹一個cookie模擬登錄,後續還有seleminum+phantomjs模擬瀏覽器登陸的文章。還不知道cookie是什麼朋友們,能夠點擊這裏python

cookie提取方法:

打開谷歌瀏覽器或者火狐瀏覽器,若是是谷歌瀏覽器的按F12這個鍵就會跳出來瀏覽器控制檯,而後點擊Network,以後就是刷新網頁開始抓包了,以後在抓到的頁面中隨便打開一個,就能看到cokie了,可是這裏的cookie並不符合python中的格式,所以須要轉換格式,下面提供了轉換的代碼git

# -*- 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複製到上述代碼中直接運行就能夠了github

使用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的值,雖然說有不少麻煩,可是我仍是比較喜歡這種方法的,由於能夠省去很多腦筋cookie

做者說

本人秉着方便他人的想法纔開始寫技術文章的,由於對於自學的人來講想要找到系統的學習教程很困難,這一點我深有體會,我也是在不斷的摸索中才小有所成,若是大家以爲我寫的不錯就幫我推廣一下,讓更多的人看到。另外若是有什麼錯誤的地方也要及時聯繫我,方便我改進,謝謝你們對個人支持。架構

最後歡迎你們看看個人其餘scrapy文章

相關文章
相關標籤/搜索