日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆))

發布時間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?為什么需要模擬登陸?

? ? ?獲取cookie,能夠爬取登陸后的頁面的數據

2.使用cookie模擬登陸的場景

? ?(1) cookie過期時間很長,常見于一些不規范的網站

? ? (2)?能在cookie過期之前把搜有的數據拿到

? ? (3)?配合其他程序使用,比如其使用selenium把登陸之后的cookie獲取到,然后保存到本地,

? ? ? ? ?scrapy發送請求之前先讀取本地cookie

3. 在一個scrapy的項目創建好之后,爬蟲的py文件里面的start_urls = [] 里面的url地址是誰來請求的?

? ? ?可以點擊進入到Spider類中的源碼中,發現start_urls 列表中的url是由里面的start_resquests()方法執行的,方法里面又? ? ? ? 調用了?make_requests_from_url()??

? ???

4.?.重寫父類中start_requests()方

? ? 設置cookies,把cookies的字符串形式轉化為字典的形式

? ?在yield scrapy.Request()中設置cookies參數

? ?默認在settings里面已經開啟了cookiess,下次請求時會帶上,上次請求的cookies

? ? 在settings里面設置 COOKIES_DEBUG = True 可以看見cookies在不同的請求里面傳遞的過程是怎樣的

? ? ?前提是不設置 LOG_LEVEL

5.? 利用cookie模擬登陸人人網

? ? 首先登陸進去人人網,把登陸進入之后的對應的cookie復制出來

? ? ?然后在項目的爬蟲文件中,進行邏輯代碼的編寫

# -*- coding: utf-8 -*- import scrapy import reclass RenrenSpider(scrapy.Spider):name = 'renren'allowed_domains = ['renren.com']start_urls = ['登陸人人網之后的網址']'''重寫父類的start_requests方法'''def start_requests(self):cookies = "自己登陸人人網之后的=cookie"'''轉化為字典的形式'''cookies = {i.split("=")[0]: i.split("=")[1] for i in cookies.split("; ")}yield scrapy.Request(self.start_urls[0],callback=self.parse,cookies=cookies # 設置cookie參數)def parse(self, response):'''我們之匹配到和自己用戶名一樣的字符串,如果匹配到則說明已經匹配到的登錄之后的數據,模擬登陸就成功了'''print(re.findall("自己人人網的用戶名", response.body.decode()))yield scrapy.Request("登陸之后的個人信息網址",callback=self.parse_detial)def parse_detial(self, response):print(re.findall("自己人人網的用戶名", response.body.decode()))

? 6. 然后我們運行程序之后,就可以看見,匹配到了登錄之后的自己人人網的用戶名?

?7. 我們還可以在scrapy.Request()? 里面設置headers參數

def start_requests(self):cookies = "自己登陸人人網之后的=cookie"'''轉化為字典的形式'''cookies = {i.split("=")[0]: i.split("=")[1] for i in cookies.split("; ")}'''設置headers參數,也可以加一些更多的請求頭'''headers = {"Cookie":cookies}yield scrapy.Request(self.start_urls[0],callback=self.parse,headers=headers # 設置headers參數)

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。