import requests
from bs4 import BeautifulSoup url = 'https://github.com/login'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Referer': 'https://github.com/',
'Upgrade-Insecure-Requests': '1', # 此处的1 必须是字符串,不是数字
'Host': 'github.com',
'Connection': 'keep-alive',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}
res1 = requests.get(url, headers=headers)
# 检验
print(res1.status_code)
print(res1.reason)
# 通过解析页面来获取动态token
soup = BeautifulSoup(res1.text, 'lxml')
tag_input = soup.find(name='input', attrs={'name': 'authenticity_token'})
authenticity_token = tag_input.get('value')
data = {'commit': 'Sign+in',
'utf8': '✓',
'authenticity_token': authenticity_token,
'login': '295345t54341@qq.com',
'password': '234523456345'} cookies = res1.cookies.get_dict()
# 这里的url是https://github.com/session,不是https://github.com/login
res2 = requests.post(url='https://github.com/session', headers=headers, cookies=cookies, data=data)
print(authenticity_token)
print(res2.status_code)
print(res2.reason)
cookies.update(res2.cookies.get_dict())
res3 = requests.get(url='https://github.com/settings/repositories',
cookies=cookies,
headers=headers
) print(res3.url)
print(res3.status_code)
print(res3.reason) soup3 = BeautifulSoup(res3.text, 'lxml')
project = soup3.find(name='div', attrs={'class': 'listgroup'})
print(project)
project_list = project.find_all(name='a', attrs={'class': 'mr-1'})
for i in project_list:
project_name = i.text
project_ = i.get('href')
project_href = 'https://github.com/' + project_.split('/', maxsplit=1)[1]
print('项目名称:%s , 项目连接:%s' % (project_name, project_href), '\n') # 爬取github注意事项,1.以后携带的cookie使用的是登录后的cookie
# 2.需要在登录页面找到token,该token是动态的需要使用bs4,或者正则表达式来获取动态值

爬取github项目。的更多相关文章

  1. python爬取github数据

    爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...

  2. 模拟登陆并爬取Github

    因为崔前辈给出的代码运行有误,略作修改和简化了. 书上例题,不做介绍. import requests from lxml import etree class Login(object): def ...

  3. 爬取github上流行的python项目

    # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import requests from pyquery import PyQ ...

  4. window 下拉取github项目失败 (Permission denied (publickey))

    原因是github 帐号ssh 失效或者没有配置 1.找到gitcmd 并进入 2.在gitcmd 下切换到 安装git路劲\Git\usr\bin 3.提示在C:\Users\Administrat ...

  5. scrapy项目4:爬取当当网中机器学习的数据及价格(CrawlSpider类)

    scrapy项目3中已经对网页规律作出解析,这里用crawlspider类对其内容进行爬取: 项目结构与项目3中相同如下图,唯一不同的为book.py文件 crawlspider类的爬虫文件book的 ...

  6. scrapy爬取校花网男神图片保存到本地

    爬虫四部曲,本人按自己的步骤来写,可能有很多漏洞,望各位大神指点指点 1.创建项目 scrapy startproject xiaohuawang scrapy.cfg: 项目的配置文件xiaohua ...

  7. 开源项目-网上公开http代理爬取、简单分类

    爬取网上公开免费代理(http/socks),解析入库,可满足需要切换IP的场景(爬虫.投票等)需求. 项目地址: https://github.com/Jwnie/proxyservice 1.采用 ...

  8. Python爬虫与一汽项目【一】爬取中海油,邮政,国家电网问题总结

    项目介绍 中国海洋石油是爬取的第一个企业,之后依次爬取了,国家电网,中国邮政,这三家公司的源码并没有多大难度, 采购信息地址: 国家电网电子商务平台 http://ecp.sgcc.com.cn/pr ...

  9. Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理

    作者:SFLYQ 今天为大家整理了32个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [ ...

随机推荐

  1. RAMOS测速

    WIN7X64-DDR31600-RAMOS测速,连续读取17GB/S,连续写入10GB/S,4K读写都是1GB/S左右.不错哦.

  2. [android]adb 模拟双击 快速点击屏幕

    1,记录数据文件到recordtap dd if=/dev/input/event1 of=/sdcard/recordtap 2,点击需要点击的位置,产生点击数据,然后按 ctrl+c 结束 3,写 ...

  3. 2016310Exp5 MSF基础应用

    1. 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击, ...

  4. mybatis-plus的代码生成器

    简介:构建自定义mybatis-plus模板,自动生成mybatis,entity,mapper,service,controller 项目源码:https://github.com/y369q369 ...

  5. note 8 字符串

    字符串String 一个字符的序列 使用成对的单引号或双引号括起来 或者三引号""" 和 ''' 表示块注释 字符串运算 长度 len()函数 first_name = ...

  6. [UE4]AttachToComponent的AttachmentRule

    官方文档 KeepRelative 将当前相对转换保持为新父级的相对转换 KeepWorld 自动计算相对变换,使附着的组件保持相同的世界变换 SnapToTarget 捕捉转换到附着点

  7. Java tomcat Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost

    关于 下面问题是因为(8005, 8080, 8009) 被原tomcat占用了. Several ports (8005, 8080, 8009) required by Tomcat v9.0 S ...

  8. java利用反射交换两个对象中的字段相同的字段值

    有时候我们的两个对象字段都是一样的,只有极少的区别,想要把一个对象字段的值,赋值给另外一个对象值 然后传给另外一个方法使用,但是这个字段太多,一个一个的复制太过繁琐. 这时候利用反射解决这个问题. c ...

  9. spark2.1源码分析3:spark-rpc如何实现将netty的Channel隐藏在inbox中

    class TransportServer bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Overri ...

  10. Java笔记Spring(六)

    web.xml各节点加载顺序 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns=&q ...