这里面通过爬虫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

友情链接

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

  1. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  2. github上传本地项目

    github上传本地项目,分为两个部分: 1.如果建立了ssh key的,直接看第二部分的上传部分就行了 2.如果没有建立ssh key的,就从头开始看吧 ——————————————————我是快乐 ...

  3. 如何参与github上的开源项目

    今晚比较闲,于是乎装修了一下博客,顺便将一块心病(怎么参加github上的开源项目)解决了,最后发个文章总结下 这些是参考的链接 http://blog.csdn.net/five3/article/ ...

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

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  5. Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言

    1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...

  6. github上fork原项目,如何将本地仓库代码更新到最新版本?

    场景: 在github上fork原项目,项目组成员发起pull request提交了代码,这时自己在本地仓库该如何更新到最新代码? 操作方法如下: 方法一.从github上进行操作然后更新 登录自己的 ...

  7. 从Github上下载了项目,导入Android Studio,gradle 报错,应该怎么修改

    一.从Github上获取源代码 我这里是直接下载ZIP文件 二.在本机的Android Studio上新建一个空白项目,目的主要是与刚从Github上下载的项目文件结构做对比 三.替换gradle文件 ...

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

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...

  9. github上传本地项目代码

    进入github首页,点击新项目new repository,如下图所示: 然后进入如下页面,填写信息: 最后点击Create repository,生成如下页面: 红色圈圈画的步骤,先点击Clone ...

随机推荐

  1. ZooKeeper在分布式应用中的作用

    作者:陈叶皓(携程邮轮研发部软件架构师) 是不是要在标题的“作用”之前加上“重要”两个字,我犹豫了一下,zookeeper提供的功能是如此的重要,以至于如果你在应用中不使用它,早晚也会在你的应用中去实 ...

  2. 某软件大赛C#版考题整理——【单选题】

    多选题:http://www.cnblogs.com/zxlovenet/p/3525849.html 编程题:http://www.cnblogs.com/zxlovenet/p/3525854.h ...

  3. Servlet下载文件迅雷不支持问题真相之一

    问题描述 最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB 真相搜罗 网上有很多帖子 ...

  4. js 闭包实例

    var db = (function() { // 创建一个隐藏的object, 这个object持有一些数据 // 从外部是不能访问这个object的 var data = {}; // 创建一个函 ...

  5. C# 指定ip段生成ip地址

    private void button1_Click(object sender, EventArgs e) { string StartIp = ""; string EndIp ...

  6. PHP中全局变量的使用global和$GLOBALS[]

    From: http://blog.csdn.net/happyqyt/article/details/7219889 用PHP开发项目,不可避免的会使用到全局变量,比如一些网站的配置信息,全站通用, ...

  7. HTML5/CSS3实现五彩进度条应用

    今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...

  8. SOFA企业应用框架

    前言 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂.导致复杂性的原因有很多,如果从架构的层面看, ...

  9. python实现原地刷新方式输出-可用于百分比进度显示输出

    方式1: import sys sys.stdout.write('\r' + '你的输出详情') sys.stdout.flush() 方式2: print('\r' + '你的输出详情', end ...

  10. SOAP消息头的处理

    SOAP消息头的处理 WebService学习总结(四)——调用第三方提供的webService服务 SOAP中 RPC/ENC 为啥被抛弃