楚子沦i 发表于 2021-8-2 15:42

scrapy起点模拟登录

许多网站的内容如果不登录是没办法查看的,比如说起点--我的书架,如果不登录就没办法产看,当然,不要问我为什么要看起点的书架。

我们将页面保持在书架页面然后打开开发者工具(f12)之后点击network按f5刷新,会有一个bookcase的请求。

然后我们点击右面就会发现我们的cookie了。


而我们如何通过python获取cookie呢?
第一个方法就是通过页面然后自己创建一个字典出来。
第二个就是通过一个python的库。
       1.browsercookie
       2.pycryptodome依赖

然后我们import browsercookie即可。

但是在使用cookies = browsercookie.chrome()获取cookie的时候,会出现各种错误,一般来说都是因为谷歌浏览器版本过高导致。我们可以先卸载掉自己的高版本浏览器,安装一个低版本的。https://zjzdmc.top/jsfx/216.html

参考这篇文章,可以知道最佳的谷歌版本是75.0.3770我们去百度下载即可。

#coding:utf-8
from scrapy import Request
from scrapy.spiders import Spider
from qidiancookie.items import QidiancookieItem
import browsercookie
class QidianCookieSpider(Spider):
    name = "qidian"
    def __init__(self):
      cookies = browsercookie.chrome()
      self.cookie_dir = {}
      for cookie in cookies:
            if cookie.domain == ".qidian.com":
                if cookie.name in ["_csrfToken",
                                 "_ga",
                                 "_ga_FZMMH98S83",
                                 "_ga_PFYW0QLV3P",
                                 "_gid",
                                 "e1",
                                 "e2",
                                 "newstatisticUUID",
                                 "ywguid",
                                 "ywkey",
                                 "ywopenid"]:
                  self.cookie_dir=cookie.value

    def start_requests(self):
      url = "https://my.qidian.com/bookcase"


      yield Request(url,cookies=self.cookie_dir)
    def parse(self, response):
      item = QidiancookieItem()
      qdselector = response.xpath('//*[@id="shelfTable"]/tbody/tr')
      for one_selector in qdselector:
            name = one_selector.xpath("td[@class='col2']/span[@class='shelf-table-name']/b/a/text()").extract()
            storytype = one_selector.xpath("td[@class='col2']/span[@class='shelf-table-name']/b/a/text()").extract()
            time = one_selector.xpath("td[@class='col3 font12']/text()").extract()
            author = one_selector.xpath("td[@class='col4']/a/text()").extract()
            item['name'] = name
            item['storytype'] = storytype
            item['time'] = time
            item['author'] = author

            yield item




然后就能获取我的书架的信息了,另外如果不想谷歌浏览器自动更新的话,可以在host里设置谷歌的更新链接。
取消谷歌的自动更新,在host文件中添加127.0.0.1 update.googleapis.com即可

Dozzm 发表于 2021-8-2 17:27

标题和内容并不一致啊。内容是获取已有cookie的方式,而不是标题所说的模拟登录。{:1_907:}一般模拟登录是通过api或者selenium登录从而获取到cookie的。

18898589561 发表于 2021-8-2 19:07

我很赞同!

明次 发表于 2021-8-2 21:23

scrapy和request有啥区别啊

楚子沦i 发表于 2021-8-3 08:55

Dozzm 发表于 2021-8-2 17:27
标题和内容并不一致啊。内容是获取已有cookie的方式,而不是标题所说的模拟登录。一般模拟登录是 ...

并非,模拟登录其实就是模拟用户登录而已。
通过获取cookie来进行登录,如果不获取cookie,那么该如何登录呢??

楚子沦i 发表于 2021-8-3 08:56

明次 发表于 2021-8-2 21:23
scrapy和request有啥区别啊

scrapy其实就是一个爬虫的框架而已。

QingYi. 发表于 2021-8-3 11:10

selenium登录 然后直接getCK保存到本地
下次直接读文件
页: [1]
查看完整版本: scrapy起点模拟登录