<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          scrapy使用cookie的三種方式

          共 2108字,需瀏覽 5分鐘

           ·

          2020-12-17 23:54



          點(diǎn)擊上方“Python學(xué)習(xí)開(kāi)發(fā)”,選擇“加為星標(biāo)

          第一時(shí)間關(guān)注Python技術(shù)干貨!

          1.如果是在headers中使用

          ????def?start_requests(self):
          ????????headers?=?{
          ????????????"user-agent":?"Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_5)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/87.0.4280.88?Safari/537.36",
          ????????????"cookie":"你的微博cookie"
          ????????}
          ????????url?=?"https://weibo.com/u/{}".format("你的微博id")
          ????????yield?Request(url,?callback=self.parse,?headers=headers)

          那么需要把settings.py的COOKIES_ENABLED設(shè)置為false

          COOKIES_ENABLED?=?False

          2.如果使用cookies=cookies的方式設(shè)置cookie
          那么需要把settings.py的COOKIES_ENABLED設(shè)置為true

          COOKIES_ENABLED?=?True

          3.多個(gè)url使用cookiejar
          此方法也受COOKIES_ENABLED=True的影響

          代碼示例

          class?CookieTestSpider(scrapy.Spider):
          ????name?=?'usecookie'
          ????cookie_dict?=?{
          ????????"SUB":?"你的微博cookie"}
          ????headers?=?{
          ????????"user-agent":?"Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_14_5)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/87.0.4280.88?Safari/537.36",
          ????}
          ????weibo_id?=?"你的微博主頁(yè)id"
          ????def?start_requests(self):
          ????????url?=?"https://weibo.com/u/{}".format(self.weibo_id)
          ????????yield?Request(url,?callback=self.parse,?headers=self.headers,?cookies=self.cookie_dict,?meta={'cookiejar':?1})

          ????def?parse(self,?response):
          ????????source?=?response.text
          ????????url?=?"https://weibo.com/u/{}".format(self.weibo_id)
          ????????if?u"我的主頁(yè)"?in?source:
          ????????????print?"找到了"
          ????????????yield?scrapy.Request(url,?headers=self.headers,?meta={'cookiejar':?response.meta['cookiejar']},
          ?????????????????????????????????callback=self.parse_page,?dont_filter=True)
          ????????else:
          ????????????print?"沒(méi)有cookie"

          ????def?parse_page(self,?response):
          ????????source?=?response.text
          ????????if?u"我的主頁(yè)"?in?source:
          ????????????print?"又找到了"
          ????????else:
          ????????????print?"沒(méi)有cookie"

          首先在start_requests中,在meta里添加一個(gè)cookiejar屬性,這個(gè)鍵必須這個(gè)名,然后是后面值可以從0開(kāi)始,如果多個(gè)start_url可以使用列表的里url對(duì)應(yīng)的下標(biāo)作為cookiejar的值,
          程序可以通過(guò)傳入的不同值傳遞多個(gè)start_url的cookie。
          后面需要使用cookie地方使用meta={'cookiejar': response.meta['cookiejar']}即可。
          這種方法的好處:

          這種是通過(guò)meta的方式,將為spider維護(hù)多個(gè)獨(dú)立的cookie會(huì)話(huà)。如果使用cookies ={},則必須手動(dòng)維護(hù)單獨(dú)的cookie會(huì)話(huà)。
          下面這個(gè)圖是cookiejar的調(diào)用棧


          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清无码成人电影 | 欧美成人精品免费 | 激情婷婷综合网 | www.黄色在线观看 | 婷婷五月高清国产 |