Python爬虫应用:requests实现GitHub登录

基础知识

在这里需要知道一些基础知识,才能理解本文的内容,若只想实现内容可跳过本部分

什么是cookie

cookie,有时我们也用其复数形式 cookies,是服务端保存在浏览器端的数据片段。以 key/value的形式进行保存。每次请求的时候,请求头会自动包含本网站此目录下的 cookie 数据。网站经常使用这个技术来识别用户是否登陆等功能。

可以单纯的把cookie理解成保存客户端相关信息的一个东西,如:当你在网上登录的时候,会有一系列标识着你身份的信息,服务器会在返回登录界面的时候,把这些信息夹在响应中传给客户端,也就区别了普通的login页面与用户登录后的界面,有了这个信息以后,服务器就能知道你是这个用户,运行你登录
它是一种解决HTTP协议无状态的方案,浏览器每次发请求的时候,都会携带cookie信息,可以随意打开一个页面,打开开发者工具,抓取任意一个包就可以找到cookie信息,如下:
在这里插入图片描述
因此在实现GitHub登录之前,我们需要先登录一次,获取cookie信息,随后在爬虫中使用cookie参数进行无需账号密码的登录。

准备工作

在这部分,需要准备爬虫发请求所需要的各种数据,通过对GitHub登录过程进行抓包分析。
无痕模式进入GitHub网页------》打开开发者工具(F12)------》点击保留日志------》点击sign in------》输入你的账号密码并登录------》点击session------》找到Cookie,具体如图所示:

在这里插入图片描述

请添加图片描述
在这里就能找到cookie信息,将其复制下来,随后生成cookies字典

代码部分

import requests


headers = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36 QIHU 360SE',
}

def login():
    # 我们登录了以后 抓包把cookie拷到headers中 设置"Cookie"参数
    # 这是没有cookie的 爬到后 title会有 .GitHub
    ur = 'https://github.com/你的用户名'
    response1 = requests.get(url=ur, headers=headers)
    with open('github_without_cookie.html', 'wb') as f:
        f.write(response1.content)

    # 可以在headers中直接设置cookie 也可以在get中设置cookies参数
    # cookies = {"cookie中的name":"cookie的value"}
    cookieStr = '这里是你的cookie字段的值'
    # 这将你的cookie字符串变成由多个key-word组成的字典
    cookies = {cookie.split('=')[0]: cookie.split('=')[-1] for cookie in cookieStr.split('; ')}
    print(cookies)
    response2 = requests.get(url=ur, headers=headers, cookies=cookies)
    with open('github_with_cookie.html', 'wb') as f:
        f.write(response2.content)

if __name__ == "__main__":
    login()

注意:有两个部分的信息需要按照你的实际情况来填,一个是你的GitHub昵称,一个是你的cookie
在完成之后,同文件夹会有两个html文件,分别对应无cookie的界面以及有cookie的界面,其中正确登录的界面应如下所示:
在这里插入图片描述
如出现上面的界面,就表示你成功使用cookie登录了!而无cookie的界面,在title处会多出来一个.GitHub
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用Python中的requests和BeautifulSoup库来实现爬取DXY-COVID-19-Data项目的代码。下面是一个简单的示例代码,可以爬取指定GitHub项目的代码: ```python import requests from bs4 import BeautifulSoup # 设置请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # GitHub release页面地址 url = 'https://github.com/BlankerL/DXY-COVID-19-Data/releases' # 发送请求 response = requests.get(url, headers=headers) # 解析HTML页面 soup = BeautifulSoup(response.content, 'html.parser') # 找到最新的release版本 release = soup.find('div', {'class': 'release-entry'}).find('a', {'class': 'Link--primary'}).get('href') # 找到最新release版本的下载链接 download_link = 'https://github.com' + release + '/download/DXY-COVID-19-Data-' + release.split('/')[-1] + '.zip' # 发送下载链接的请求 code_response = requests.get(download_link, headers=headers) # 将下载的zip文件保存到本地 with open('DXY-COVID-19-Data.zip', 'wb') as f: f.write(code_response.content) print('下载完成!') ``` 在示例代码中,我们首先设置了请求头,然后发送了一个GET请求获取DXY-COVID-19-Data项目的release页面。接着,使用BeautifulSoup库解析HTML页面,找到最新的release版本和其下载链接。最后,发送下载链接的请求,将下载的zip文件保存到本地。请注意,这里只是一个简单的示例代码,实际使用时,还需要进行一些异常处理和反爬虫处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱你是长久之计~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值