python爬虫---->github上python的项目

  这里面通过爬虫github上的一些start比较高的python项目来学习一下BeautifulSoup和pymysql的使用。我一直以为山是水的故事,云是风的故事,你是我的故事,可是却不知道,我是不是你的故事。

github的python爬虫

爬虫的需求:爬取github上有关python的优质项目,以下是测试用例,并没有爬取很多数据。

一、实现基础功能的爬虫版本

这个案例可以学习到关于pymysql的批量插入、使用BeautifulSoup解析html数据以及requests库的get请求数据的知识。至于pymysql的一些使用,可以参考博客:python框架---->pymysql的使用

import requests
import pymysql.cursors
from bs4 import BeautifulSoup

def get_effect_data(data):
    results = list()
    soup = BeautifulSoup(data, ‘html.parser‘)
    projects = soup.find_all(‘div‘, class_=‘repo-list-item‘)
    for project in projects:
        writer_project = project.find(‘a‘, attrs={‘class‘: ‘v-align-middle‘})[‘href‘].strip()
        project_language = project.find(‘div‘, attrs={‘class‘: ‘d-table-cell col-2 text-gray pt-2‘}).get_text().strip()
        project_starts = project.find(‘a‘, attrs={‘class‘: ‘muted-link‘}).get_text().strip()
        update_desc = project.find(‘p‘, attrs={‘class‘: ‘f6 text-gray mb-0 mt-2‘}).get_text().strip()

        result = (writer_project.split(‘/‘)[1], writer_project.split(‘/‘)[2], project_language, project_starts, update_desc)
        results.append(result)
    return results

def get_response_data(page):
    request_url = ‘https://github.com/search‘
    params = {‘o‘: ‘desc‘, ‘q‘: ‘python‘, ‘s‘: ‘stars‘, ‘type‘: ‘Repositories‘, ‘p‘: page}
    resp = requests.get(request_url, params)
    return resp.text

def insert_datas(data):
    connection = pymysql.connect(host=‘localhost‘,
                                 user=‘root‘,
                                 password=‘root‘,
                                 db=‘test‘,
                                 charset=‘utf8mb4‘,
                                 cursorclass=pymysql.cursors.DictCursor)
    try:
        with connection.cursor() as cursor:
            sql = ‘insert into project_info(project_writer, project_name, project_language, project_starts, update_desc) VALUES (%s, %s, %s, %s, %s)‘
            cursor.executemany(sql, data)
            connection.commit()
    except:
        connection.close()

if __name__ == ‘__main__‘:
    total_page = 2 # 爬虫数据的总页数
    datas = list()
    for page in range(total_page):
        res_data = get_response_data(page + 1)
        data = get_effect_data(res_data)
        datas += data
    insert_datas(datas)

运行完之后,可以在数据库中看到如下的数据:

11 tensorflow tensorflow C++ 78.7k Updated Nov 22, 2017
12 robbyrussell oh-my-zsh Shell 62.2k Updated Nov 21, 2017
13 vinta awesome-python Python 41.4k Updated Nov 20, 2017
14 jakubroztocil httpie Python 32.7k Updated Nov 18, 2017
15 nvbn thefuck Python 32.2k Updated Nov 17, 2017
16 pallets flask Python 31.1k Updated Nov 15, 2017
17 django django Python 29.8k Updated Nov 22, 2017
18 requests requests Python 28.7k Updated Nov 21, 2017
19 blueimp jQuery-File-Upload JavaScript 27.9k Updated Nov 20, 2017
20 ansible ansible Python 26.8k Updated Nov 22, 2017
21 justjavac free-programming-books-zh_CN JavaScript 24.7k Updated Nov 16, 2017
22 scrapy scrapy Python 24k Updated Nov 22, 2017
23 scikit-learn scikit-learn Python 23.1k Updated Nov 22, 2017
24 fchollet keras Python 22k Updated Nov 21, 2017
25 donnemartin system-design-primer Python 21k Updated Nov 20, 2017
26 certbot certbot Python 20.1k Updated Nov 20, 2017
27 aymericdamien TensorFlow-Examples Jupyter Notebook 18.1k Updated Nov 8, 2017
28 tornadoweb tornado Python 14.6k Updated Nov 17, 2017
29 python cpython Python 14.4k Updated Nov 22, 2017
30 reddit reddit Python 14.2k Updated Oct 17, 2017

友情链接

时间: 2024-11-09 03:06:38

python爬虫---->github上python的项目的相关文章

GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局.能够让开发者轻松开发

在github上参与开源项目贡献代码

1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote -v, 看看自己当前git repository的configure, origin 表示自己的repository 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:git remote add upstream

Fragment为载体可自动布局的CardView(GitHub上写开源项目初体验)

前些天一直在看Android5.0 的Material Desgin,里面新增了一个新的控件——CardView.从Google这次直接提供了CardView控件就可以看出它已经变的非常流行了. 在此之前我们可以通过设置圆角边框来模拟CardView效果,但现在既然Google已经提供了新控件就没有理由不用它了.而我之前在学自定义布局的时候写了一个CardView自动布局的小Demo——ANDROID自定义视图——仿瀑布布局(附源码) 刚好最近正好在学Git,而且也想试试CardView在5.0

向github上传一个项目

1.在Github上新建一个项目 然后在你需要提交的目录下 echo "# demo" >> README.md //新建README.md,然后把你要写的简要和注释写到里面git init 初始化现存的版本库git add README.md git commit -m "first commit" git remote add origin https://github.com/zlmhs/-.git 添加远程仓库路径git push -u orig

如何在github上fork一个项目来贡献代码以及同步原作者的修改

如何在github上fork一个项目来贡献代码以及同步原作者的修改 作为一个IT人,通过github进行学习是最快的成长手段.我们可以浏览别人的优秀代码.但只看不动手还是成长得很慢,因此为别人贡献代码才是明智之举.比如我们看下片看,许多大片都是由字幕组免费翻译压制的.为什么他们要这样做呢?因为他们都是聪明的大学生,为了提高听力水平,提高笔译水平才这样干的!中国人都是非常实务的!因此贡献代码,参与开源项目都是有益无害的!好了,让我们开始吧! 如何贡献自己的力量 首先你总得有自己的github帐号吧

【转载】【技巧总结】PyCharm怎么克隆github上开源的项目

PyCharm怎么clone github上开源的项目 一.先要确保PyCharm正确的配置了Git ??如果你已经在PyCharm中配置好了Git,可以跳过此步骤,直接看下一步. ??那么怎么在PyCharm中配置Git呢? 百度搜索Git安装包,安装过程不再多说,请记住Git的安装路径: 打开PyCharm,如图1-1所示:  图1-1 点击右下角的"Configure",如图1-2所示:  图1-2 点击"Settings", 出现如图1-3所示界面:  图1

通过git shell 在Github上传本地项目

首先现在github上新建一个库,再进行如下操作,过程不赘述 1.打开git shell 2.cd到项目位置 ????? // cd archives-vue 3.git init 4.Get add?. ???? //这里add后面有空格 5.git commit -m "" ????? //设置提交信息 6.git remote add origin ????? //本地仓库链接远程仓库,origin为远程库的名称,后面跟着开始新建库的github的路径 7.git remote

Python爬虫——网页上的字符按照我的想法输出

最近学习Python爬虫,"明明是按照步骤做,怎么我会出现好多的问题?" 引言:在网页之中,将爬取的内容输出展示出来,但是往往会出现很多的格式的问题, 如 s = “\n\n\n\n\n\n\n\n  正经的内容\n\n\n\ 又是内容   \n 不要的  \n” 如何将上面不要的字符删除或者提取出需要的呢? 1.提取出需要 正经的内容\n\n\n\ 又是内容   \n 不要的: s.text[8:-2]; 就是取出第8个字符,到倒数第二个字符. 2.删除左边的 \n s.rstrip

Python爬虫入门 | 1 Python环境的安装

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~ 话不多说,正式开始我们的第一节课<Python环境的安装>吧~ 啦啦啦开课啦,看黑板,都看黑板~ 安装Anaconda 在我们的教学中,我们使用的版本是Python3,至于为什么要选Python3,哼哼!工欲善其事,必先利其器,在学习爬虫之前,你得先搭建自己的编程环境.废话不多说,按