BrowserCookie 模拟登录B站,获取个人信息

版权声明:未经本人同意,禁止转载。 https://blog.csdn.net/qq_34022601/article/details/88700943

1.当安装browsercookie后,建立项目(browser_cookie)

yh@yh-PC:~/python$ scrapy startproject browser_cookie
...
yh@yh-PC:~/python$ cd browser_cookie
yh@yh-PC:~/python/browser_cookie$ scrapy genspider example example.com
...

2.创建好项目后,进入项目目录后

修改middlewares.py

添加以下代码:

import browsercookie
from scrapy.downloadermiddlewares.cookies import CookiesMiddleware


### My define
class BrowserCookiesMiddleware(CookiesMiddleware):
    def __init__(self,debug=False):
            super().__init__(debug)
            self.load_browser_cookies()

    def load_browser_cookies(self):

        jar=self.jars['chrome']
        chrome_cookies=browsercookie.chrome()
        for cookie in chrome_cookies:
            jar.set_cookie(cookie)
        #jar=self.jars['firefox']
        #firefox_cookeis=browsercookie.firefox()
        #for cookie in firefox_cookeis:
        #    jar.set_cookie(cookie)

注:

我没有firefox浏览器,所以注释了获取firefox中cookies的代码。

如果读者想要使用firefox浏览器,删去注释即可。

3.修改settings.py,加入以下代码

USER_AGENT='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
DOWNLOADER_MIDDLEWARES ={
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 200,
    'browser_cookie.middlewares.BrowserCookiesMiddleware':300
}

注:

我们暂时不需要在为example.py(爬虫文件)增加特殊代码,我们只是利用这个项目,来实现cookie模拟登录

4.再次进入命令行

yh@yh-PC:~$ cd python/browser_cookie
yh@yh-PC:~/python/browser_cookie$ scrapy shell
...
...
>>> from scrapy import Request
>>> url='https://space.bilibili.com/******' ###填写自己的主页
>>> fetch(Request(url,meta={'cookiejar':'chrome'}))
2019-03-20 22:02:43 [scrapy.core.engine] INFO: Spider opened
2019-03-20 22:02:43 [scrapy.core.engine] DEBUG: Crawled (404) <GET https://space.bilibili.com/robots.txt> (referer: None)
2019-03-20 22:02:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://space.bilibili.com/*******> (referer: None)
>>> view(response)
###这里会跳转到浏览器
>>> response.xpath('//meta[@name="description"]/@content').extract()[1]
[ '******,未来的程序员\n热爱注入灵魂,bilibili是国内知名的视频弹幕网站,这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主。大家可以在这里找到许多欢乐。']

到此我们就已经尝试了使用chrome cookies登录B站,并爬到了自己个人信息。

5.如果你在爬去其他网站时,可能会出现这样的情况:

>>> fetch(Request(url,meta={'cookiejar':'chrome'}))
2019-03-20 22:13:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.zhihu.com/robots.txt> (referer: None)
2019-03-20 22:13:59 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://www.zhihu.com/people/austinbu-zhi-suo-yun/activities>

对,你被知乎的robots协议禁止访问。

这时,你可以修改项目的settings.py,将

ROBOTSTXT_OBEY = True

更改为:

ROBOTSTXT_OBEY = False

这样表示你的爬虫程序将不在遵守网站的robots协议。

注:不要滥用此方法,为网站造成不必要的麻烦

猜你喜欢

转载自blog.csdn.net/qq_34022601/article/details/88700943
今日推荐