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 | Python | 14.2k | Updated Oct 17, 2017 |
友情链接
python爬虫---->github上python的项目的更多相关文章
- python爬虫-基础入门-python爬虫突破封锁
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...
- github上传本地项目
github上传本地项目,分为两个部分: 1.如果建立了ssh key的,直接看第二部分的上传部分就行了 2.如果没有建立ssh key的,就从头开始看吧 ——————————————————我是快乐 ...
- 如何参与github上的开源项目
今晚比较闲,于是乎装修了一下博客,顺便将一块心病(怎么参加github上的开源项目)解决了,最后发个文章总结下 这些是参考的链接 http://blog.csdn.net/five3/article/ ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言
1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...
- github上fork原项目,如何将本地仓库代码更新到最新版本?
场景: 在github上fork原项目,项目组成员发起pull request提交了代码,这时自己在本地仓库该如何更新到最新代码? 操作方法如下: 方法一.从github上进行操作然后更新 登录自己的 ...
- 从Github上下载了项目,导入Android Studio,gradle 报错,应该怎么修改
一.从Github上获取源代码 我这里是直接下载ZIP文件 二.在本机的Android Studio上新建一个空白项目,目的主要是与刚从Github上下载的项目文件结构做对比 三.替换gradle文件 ...
- Fragment为载体可自己主动布局的CardView(GitHub上写开源项目初体验)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...
- github上传本地项目代码
进入github首页,点击新项目new repository,如下图所示: 然后进入如下页面,填写信息: 最后点击Create repository,生成如下页面: 红色圈圈画的步骤,先点击Clone ...
随机推荐
- ZooKeeper在分布式应用中的作用
作者:陈叶皓(携程邮轮研发部软件架构师) 是不是要在标题的“作用”之前加上“重要”两个字,我犹豫了一下,zookeeper提供的功能是如此的重要,以至于如果你在应用中不使用它,早晚也会在你的应用中去实 ...
- 某软件大赛C#版考题整理——【单选题】
多选题:http://www.cnblogs.com/zxlovenet/p/3525849.html 编程题:http://www.cnblogs.com/zxlovenet/p/3525854.h ...
- Servlet下载文件迅雷不支持问题真相之一
问题描述 最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB 真相搜罗 网上有很多帖子 ...
- js 闭包实例
var db = (function() { // 创建一个隐藏的object, 这个object持有一些数据 // 从外部是不能访问这个object的 var data = {}; // 创建一个函 ...
- C# 指定ip段生成ip地址
private void button1_Click(object sender, EventArgs e) { string StartIp = ""; string EndIp ...
- PHP中全局变量的使用global和$GLOBALS[]
From: http://blog.csdn.net/happyqyt/article/details/7219889 用PHP开发项目,不可避免的会使用到全局变量,比如一些网站的配置信息,全站通用, ...
- HTML5/CSS3实现五彩进度条应用
今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...
- SOFA企业应用框架
前言 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂.导致复杂性的原因有很多,如果从架构的层面看, ...
- python实现原地刷新方式输出-可用于百分比进度显示输出
方式1: import sys sys.stdout.write('\r' + '你的输出详情') sys.stdout.flush() 方式2: print('\r' + '你的输出详情', end ...
- SOAP消息头的处理
SOAP消息头的处理 WebService学习总结(四)——调用第三方提供的webService服务 SOAP中 RPC/ENC 为啥被抛弃