Python爬虫使用脚本登录Github并查看信息

yizhihongxing

讲解"Python爬虫使用脚本登录Github并查看信息"的攻略要分为以下几个步骤:

  1. 登录Github账号获取Cookie
  2. 使用Cookie请求Github登录后的页面,获取个人信息
  3. 整合到脚本中,实现自动登录并获取个人信息

下面分别详细介绍每个步骤。

登录Github账号获取Cookie

我们可以在Chrome浏览器中登录Github并使用F12打开开发者工具,然后在Network中找到登录请求,并查看其中的请求头(header)。可以看到其中有一个cookie字段,这个字段就是我们需要的Cookie。

示例1代码:

import requests

headers = {
    'Host': 'github.com',
    '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',
    'Accept': '*/*',
    'Accept-Language': 'en-US,en;q=0.5',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest',
    'Referer': 'https://github.com/login',
    'Connection': 'keep-alive',
}

data = {
  'commit': 'Sign in',
  'utf8': '✓',
  'authenticity_token': 'XXXXXXXXXXXXXXXXXX', # 这里填写登录页面中的authenticity_token字段
  'login': 'github_username',
  'password': 'github_password'
}

response = requests.post('https://github.com/session', headers=headers, data=data)
cookies = response.cookies.get_dict()
print(cookies) # 查看获取到的Cookie

示例1中的代码需要替换其中的authenticity_token为正确的值,该值可以通过抓包或者其他方式获得。示例1中我们使用requests库发送请求,得到响应后可以使用response.cookies.get_dict()方法获取Cookie的字典格式表示。

使用Cookie请求Github登录后的页面,获取个人信息

得到Cookie之后,我们就可以使用它来请求Github登录后的个人页面,然后从页面中获取我们需要的信息。这一步的主要目标就是找到请求的URL和需要的请求头(header)。我们可以在Chrome浏览器中登录Github,并在F12的开发者工具中查看请求的URL和header信息。

示例2代码:

import requests

cookies = {'_ga': 'GA1.2.1001127999.1523271992', '_gid': 'GA1.2.650638013.1523271992', 'user_session': 'xxxxx'} # 此处填写在上一步中获取到的Cookie

headers = {
    'Host': 'github.com',
    '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',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',
    'Referer': 'https://github.com',
    'Connection': 'keep-alive',
}

response = requests.get('https://github.com/github_username', headers=headers, cookies=cookies)
print(response.text) # 查看获取到的个人页面,可根据需要提取信息

示例2中的代码中我们使用requests库发送请求,由于请求需要使用Cookie来表示身份,所以我们在请求中加上了早先获取到的Cookie。在headers中,我们需要添加一些必要的头信息,可以根据需要自由添加或删除。

整合到脚本中,实现自动登录并获取个人信息

示例1和示例2中获取到的信息分别是登录需要的Cookie和个人信息页面,我们需要把它们整合到一个脚本中,从而实现使用Python脚本自动登录Github并获取个人信息。

步骤如下:

  1. 获取登录界面中的authenticity_token字段
  2. 使用获取到的authenticity_token和账号密码,发送POST请求获取Cookie,并保存到变量中
  3. 使用获取到的Cookie,发送HTTP请求获取登录后的个人页面,提取需要的信息

示例3代码:

import requests
from bs4 import BeautifulSoup

# 获取authenticity_token
login_url = 'https://github.com/login'
login_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
                  'Accept-Language': 'en-US,en;q=0.5',
                  'Accept-Encoding': 'gzip, deflate, br',
                  'Referer': 'https://github.com/'
                }
login_res = requests.get(login_url, headers=login_headers)
soup = BeautifulSoup(login_res.text, 'lxml')
token = soup.find('input',attrs={"name":"authenticity_token"}).get("value")
print(token)

# 使用Cookie请求个人信息页面
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',
    'Referer': 'https://github.com/',
}

data = {
  'commit': 'Sign in',
  'utf8': '✓', 
  'authenticity_token': token,
  'login': 'your_github_login_id',
  'password': 'your_github_password'
}

login_url = 'https://github.com/session'
login_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
                  'Referer': 'https://github.com/login',
                  'Content-Type': 'application/x-www-form-urlencoded',
                  'Accept-Encoding': 'gzip, deflate, br',
                  'Accept-Language': 'en-US,en;q=0.5'
                }
login_res = requests.post(login_url, headers=login_headers, data=data)
print('Login Successfully!')
cookies = login_res.cookies.get_dict()

personal_url = 'https://github.com/<your_github_username>'
response = requests.get(personal_url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.text, 'lxml')
print("Your Name is : "+soup.select_one('span.p-name').text)

示例3中我们先使用requests库向登录页面发送请求,通过BeautifulSoup库解析到authenticity_token值,然后整合cookie、headers和提交的数据。最终请求成功后,我们得到返回的个人主页(response.text)并提取其中的用户名(soup.select_one('span.p-name').text)。

希望这些例子对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫使用脚本登录Github并查看信息 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 最值得Java开发者收藏的网站

    当谈到Java开发领域的知识获取和交流时,网络是一种不可替代的资源。这里我将分享一些最值得Java开发者收藏的网站,并提供相应的示例说明,希望可以帮助想要扩展Java技能和知识的开发者们。 1. Stack Overflow Stack Overflow 是一个集问答、博客、论坛和编程课程为一体的交流平台,开发者们可以在这里提出各种开发问题,也可以分享自己的…

    GitHub 2023年5月16日
    00
  • go mod 使用私有gitlab群组的解决方案

    下面是关于”go mod使用私有gitlab群组的解决方案”的完整攻略。 背景 在使用Go开发项目的过程中,可能会使用到私有GitLab上的包。而在使用Go modules时,我们需要在go.mod中引入这些包。但是,由于私有GitLab需要认证,这样我们就不能直接引入。 那么,怎样才能够在Go modules中使用私有GitLab呢? 以下是两种解决方案。…

    GitHub 2023年5月16日
    00
  • golang json性能分析详解

    Golang JSON性能分析详解 在Golang中JSON是一种常用的数据格式,常用于前后端数据交互和数据存储。本文将详细介绍Golang中JSON的性能分析方法,并附上两个示例供参考。 性能分析方法 在Golang中,一般使用标准包中的encoding/json包进行JSON的编解码操作。性能分析可以通过testing包中的BenchMark功能实现。下…

    GitHub 2023年5月16日
    00
  • IDEA2020.1同步系统设置到GitHub的方法

    当您在使用IntelliJ IDEA 2020.1开发Java项目时,您可能需要同步您的项目配置和设置到GitHub上,以便将它们与团队成员或不同设备共享。下面是一个完整的攻略,以便帮助您实现此目标。 步骤1:安装Git插件 首先,您需要在IntelliJ IDEA中安装Git插件。您可以在IntelliJ IDEA的插件市场中找到该插件,并按照指示完成安装…

    GitHub 2023年5月16日
    00
  • IDEA配置GIT的详细教程

    下面详细讲解在IDEA中配置GIT的步骤: 1. 下载并安装GIT 首先需要下载并安装GIT客户端,网址是 https://git-scm.com/downloads,选择对应系统的安装包进行下载和安装。 2. 在IDEA中安装Git插件 在IDEA中,打开“Settings”界面,然后在左侧的列表里选择“Plugins”,在右侧的搜索框中搜索“Git”,然…

    GitHub 2023年5月16日
    00
  • Vue工程模板文件 webpack打包配置方法

    首先需要了解的是Vue是一种基于组件的前端框架,而webpack则是一种模块化打包工具,二者的结合可以为我们的项目带来更好的开发和部署体验。本文将详细介绍如何通过webpack对Vue工程模板文件进行打包配置。 创建Vue工程模板文件 首先需要安装Vue脚手架,具体方法是通过npm命令安装: $ npm install -g vue-cli 安装完成后可以通…

    GitHub 2023年5月16日
    00
  • 教你一招完美解决vscode安装go插件失败问题

    下面是关于“教你一招完美解决vscode安装go插件失败问题”的完整攻略。 背景 在使用Visual Studio Code(VSCode)开发Go语言应用程序时,我们需要安装相应的Go语言插件。但有时由于各种原因,安装插件的过程中可能会遇到各种错误和问题,比如网络问题、权限问题、配置问题等等,这可能会导致安装失败。 解决方法1:使用手动安装 一种简单的解决…

    GitHub 2023年5月16日
    00
  • windows下Git+TortoiseGit配置超详细步骤

    下面就为您详细讲解“windows下Git+TortoiseGit配置超详细步骤”的完整攻略,过程中包含两条示例说明。 准备工作 在开始配置之前,需要先进行以下准备工作: 安装Git和TortoiseGit。 在Github上创建一个新的仓库(或者使用已有的仓库)。 配置Git 配置用户信息 在Git Bash中输入以下命令: $ git config –…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部