python爬虫数据分析案例(基于爬虫的数据分析)
如何用Python进行大数据挖掘和分析?
如何用Python进行大数据挖掘和分析?快速入门路径图
大数据无处不在。在时下这个年代,不管你喜欢与否,在运营一个成功的商业的过程中都有可能会遇到它。
什么是 大数据 ?
大数据就像它看起来那样——有大量的数据。单独而言,你能从单一的数据获取的洞见穷其有限。但是结合复杂数学模型以及强大计算能力的TB级数据,却能创造出人类无法制造的洞见。大数据分析提供给商业的价值是无形的,并且每天都在超越人类的能力。
大数据分析的第一步就是要收集数据本身,也就是众所周知的“数据挖掘”。大部分的企业处理着GB级的数据,这些数据有用户数据、产品数据和地理位置数据。今天,我将会带着大家一起探索如何用 Python 进行大数据挖掘和分析?
为什么选择Python?
Python最大的优点就是简单易用。这个语言有着直观的语法并且还是个强大的多用途语言。这一点在大数据分析环境中很重要,并且许多企业内部已经在使用Python了,比如Google,YouTube,迪士尼等。还有,Python是开源的,并且有很多用于数据科学的类库。
现在,如果你真的要用Python进行大数据分析的话,毫无疑问你需要了解Python的语法,理解正则表达式,知道什么是元组、字符串、字典、字典推导式、列表和列表推导式——这只是开始。
数据分析流程
一般可以按“数据获取-数据存储与提取-数据预处理-数据建模与分析-数据可视化”这样的步骤来实施一个数据分析项目。按照这个流程,每个部分需要掌握的细分知识点如下:
数据获取:公开数据、Python爬虫
外部数据的获取方式主要有以下两种。
第一种是获取外部的公开数据集,一些科研机构、企业、政府会开放一些数据,你需要到特定的网站去下载这些数据。这些数据集通常比较完善、质量相对较高。
另一种获取外部数据的方式就是爬虫。
比如你可以通过爬虫获取招聘网站某一职位的招聘信息,爬取租房网站上某城市的租房信息,爬取豆瓣评分评分最高的电影列表,获取知乎点赞排行、网易云音乐评论排行列表。基于互联网爬取的数据,你可以对某个行业、某种人群进行分析。
在爬虫之前你需要先了解一些 Python 的基础知识:元素(列表、字典、元组等)、变量、循环、函数………
以及,如何用 Python 库(urllib、BeautifulSoup、requests、scrapy)实现网页爬虫。
掌握基础的爬虫之后,你还需要一些高级技巧,比如正则表达式、使用cookie信息、模拟用户登录、抓包分析、搭建代理池等等,来应对不同网站的反爬虫限制。
数据存取:SQL语言
在应对万以内的数据的时候,Excel对于一般的分析没有问题,一旦数据量大,就会力不从心,数据库就能够很好地解决这个问题。而且大多数的企业,都会以SQL的形式来存储数据。
SQL作为最经典的数据库工具,为海量数据的存储与管理提供可能,并且使数据的提取的效率大大提升。你需要掌握以下技能:
提取特定情况下的数据
数据库的增、删、查、改
数据的分组聚合、如何建立多个表之间的联系
数据预处理:Python(pandas)
很多时候我们拿到的数据是不干净的,数据的重复、缺失、异常值等等,这时候就需要进行数据的清洗,把这些影响分析的数据处理好,才能获得更加精确地分析结果。
对于数据预处理,学会 pandas (Python包)的用法,应对一般的数据清洗就完全没问题了。需要掌握的知识点如下:
选择:数据访问
缺失值处理:对缺失数据行进行删除或填充
重复值处理:重复值的判断与删除
异常值处理:清除不必要的空格和极端、异常数据
相关操作:描述性统计、Apply、直方图等
合并:符合各种逻辑关系的合并操作
分组:数据划分、分别执行函数、数据重组
Reshaping:快速生成数据透视表
概率论及统计学知识
需要掌握的知识点如下:
基本统计量:均值、中位数、众数、百分位数、极值等
其他描述性统计量:偏度、方差、标准差、显著性等
其他统计知识:总体和样本、参数和统计量、ErrorBar
概率分布与假设检验:各种分布、假设检验流程
其他概率论知识:条件概率、贝叶斯等
有了统计学的基本知识,你就可以用这些统计量做基本的分析了。你可以使用 Seaborn、matplotlib 等(python包)做一些可视化的分析,通过各种可视化统计图,并得出具有指导意义的结果。
Python 数据分析
掌握回归分析的方法,通过线性回归和逻辑回归,其实你就可以对大多数的数据进行回归分析,并得出相对精确地结论。这部分需要掌握的知识点如下:
回归分析:线性回归、逻辑回归
基本的分类算法:决策树、随机森林……
基本的聚类算法:k-means……
特征工程基础:如何用特征选择优化模型
调参方法:如何调节参数优化模型
Python 数据分析包:scipy、numpy、scikit-learn等
在数据分析的这个阶段,重点了解回归分析的方法,大多数的问题可以得以解决,利用描述性的统计分析和回归分析,你完全可以得到一个不错的分析结论。
当然,随着你实践量的增多,可能会遇到一些复杂的问题,你就可能需要去了解一些更高级的算法:分类、聚类。
然后你会知道面对不同类型的问题的时候更适合用哪种算法模型,对于模型的优化,你需要去了解如何通过特征提取、参数调节来提升预测的精度。
你可以通过 Python 中的 scikit-learn 库来实现数据分析、数据挖掘建模和分析的全过程。
总结
其实做数据挖掘不是梦,5步就能让你成为一个Python爬虫高手!
如何用python爬取网站数据?
这里简单介绍一下吧,以抓取网站静态、动态2种数据为例,实验环境win10+python3.6+pycharm5.0,主要内容如下:
抓取网站静态数据(数据在网页源码中):以糗事百科网站数据为例
1.这里假设我们抓取的数据如下,主要包括用户昵称、内容、好笑数和评论数这4个字段,如下:
对应的网页源码如下,包含我们所需要的数据:
2.对应网页结构,主要代码如下,很简单,主要用到requests+BeautifulSoup,其中requests用于请求页面,BeautifulSoup用于解析页面:
程序运行截图如下,已经成功爬取到数据:
抓取网站动态数据(数据不在网页源码中,json等文件中):以人人贷网站数据为例
1.这里假设我们爬取的是债券数据,主要包括年利率、借款标题、期限、金额和进度这5个字段信息,截图如下:
打开网页源码中,可以发现数据不在网页源码中,按F12抓包分析时,才发现在一个json文件中,如下:
2.获取到json文件的url后,我们就可以爬取对应数据了,这里使用的包与上面类似,因为是json文件,所以还用了json这个包(解析json),主要内容如下:
程序运行截图如下,已经成功抓取到数据:
至此,这里就介绍完了这2种数据的抓取,包括静态数据和动态数据。总的来说,这2个示例不难,都是入门级别的爬虫,网页结构也比较简单,最重要的还是要会进行抓包分析,对页面进行分析提取,后期熟悉后,可以借助scrapy这个框架进行数据的爬取,可以更方便一些,效率更高,当然,如果爬取的页面比较复杂,像验证码、加密等,这时候就需要认真分析了,网上也有一些教程可供参考,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧。
Python 爬虫的入门教程有哪些值得推荐的?
Python 爬虫的入门教程有很多,以下是我推荐的几本:
1.《Python 网络爬虫开发实战》:这本书介绍了Python爬虫的基本原理,以及如何使用Python编写爬虫程序,实现网络爬虫的功能。
2.《Python爬虫技术实战》:这本书介绍了Python爬虫的基本原理,以及如何使用Python编写爬虫程序,实现网络爬虫的功能。
3.《Python爬虫数据分析》:这本书介绍了如何分析爬取到的数据,以及如何使用Python编写爬虫程序,实现网络爬虫的功能。
4.《Python爬虫实战:深入理解Web抓取》:这本书介绍了如何使用Python编写爬虫程序,实现网络爬虫的功能,以及如何深入理解Web抓取。
5.《Python网络爬虫实战》:这本书介绍了如何使用Python编写爬虫程序,实现网络爬虫的功能,以及如何解决爬虫程序遇到的问题。
以上就是我推荐的几本Python爬虫的入门教程,可以帮助初学者快速掌握Python爬虫的基本技术。
python基础 爬虫项目有哪些?
我们上篇才讲了面试中需要准备的内容,关于最后一点可能讲的不是很详细,小伙伴们很有对项目这块很感兴趣。毕竟所有的理论知识最后都是通过实践检验的,如果能有拿得出手的项目,面试中会大大的加分。下面小编就来跟大讲讲python的爬虫项目有哪些以及该学点什么内容。
wesome-spider
这一项目收集了100多个爬虫,默认使用了Python作为爬虫语言。你既可以在这个项目中,找到爬取Bilibili视频的爬虫,也可以使用爬虫,通过豆瓣评分和评价人数等各项数据,来挖掘那些隐藏的好书,甚至还可以用来爬取京东、链家、网盘等生活所需的数据。此外,这个项目还提供了一些很有意思的爬虫,比如爬取神评论、妹子图片、心灵毒鸡汤等等,既有实用爬虫,也有恶搞自嗨,满足了大部分人实用爬虫的需求。
Nyspider
Nyspider也非常厉害,如果你想获得“信息”,它是一个不错的选择。在这个项目里,你既能获取链家的房产信息,也可以批量爬取A股的股东信息,猫眼电影的票房数据、还可以爬取猎聘网的招聘信息、获取融资数据等等,可谓是爬取数据,获取信息的好手。
python-spider
这个项目是ID为Jack-Cherish的东北大学学生整理的python爬虫资料,涵盖了很多爬虫实战项目,如下载漫画、答题辅助系统、抢票小助手等等等等。如果你已经学会了爬虫,急切得像找一些项目练手,这里就可以满足你的这一需求。当然,W3Cschool上也有很多爬虫实战项目,有需要的同学,也可以拿来作为练习使用。
以上的3个模块基于GitHub中的部分内容,感兴趣的小伙伴也可以了解下其他的模块,毕竟GitHub使用也比较广泛。更多Python学习推荐:PyThon学习网教学中心。
python爬虫数据存到非本地mysql
pymysql 基本使用 八个步骤以及案例分析
一.导入pymysql模块
导入pymysql之前需要先安装pymysql模块
方法一:直接在pycharm编译器里面输入 pip install pymysql
方法二:win+r -- 输入cmd --在里面输入pip install pymysql
ps:在cmd中输入pip list后回车 可以找到安装的pymysql就表示安装成功了
1
2
3
4
5
6
1
2
3
4
5
6
在pycharm编译器中导入
import pymysql
1
2
1
2
二.获取到database的链接对象
coon = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql_test')
1
1
user:是你的数据库用户名
password:数据库密码
database:你已经创建好的数据库
1
2
3
1
2
3
三.创建数据表的方法
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,
src varchar(50),
skill varchar(100)''')
1
2
3
4
1
2
3
4
四.获取执行sql语句的光标对象
cousor = coon.cousor()
1
1
五.定义要执行的sql语句
1.sql的增加数据的方法
sql = '''insert into test_mysql(id,src,skill) values(%d,%s,%s)'''
1
1
ps: test_mysql 是你连接到的数据库中的一张表
id,src,skill 这个是你创建表时所定义的字段关键字
%d,%s,%s 这个要根据你创建的字段关键字的类型而定,记住要一一对应
1
2
3
1
2
3
2.sql的删除数据的方法
sql_1 = '''delete from test_mysql where src=%s;'''
1
1
3.sql的修改数据方法
sql_2 = '''update test_mysql set src=%s where skill=%s;'
1
1
4.sql的查询方法
sql_3 = '''select * from test_mysql where skill = %s'''
1
1
六.通过光标对象执行sql语句
1.执行增加数据的sql语句
cousor.execute(sql, [2, '', '000000'])
运行后在mysql的可视化后台就可以直观的添加的数据
1
2
1
2
2.执行删除数据sql语句
new = ''
cousor.execute(sql_1, [new])
PS:这里就是根据sql语句where后面的条件进行删除对应的数据
要记住传入的数据要与sql的where后面条件匹配
1
2
3
4
1
2
3
4
3.执行修改数据的sql语句
url = ''
pwd = '666666'
cousor.execute(sql_2,[pwd,url])
1
2
3
1
2
3
4.执行查询数据的sql语句
result1 = cousor.fetchone()
fetchone() 查询=整个表中的第一条数据,
如果再次使用就会查找到第二条数据,
还可以在括号内输入id值查询到相应的数据
result2 = cousor.fetchmany()
fetchmany()查询到表里的多条数据,
在括号里输入几就会查找到表的前几条数据
result2 = cousor.fetchall()
fetchall()查询到sql查询匹配到的所有数据
print(result)
用print输出语句就能直接打印输出所查询到的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
**总结: 在执行sql语句要传入参数时,这个参数要以列表或者元组的类型传入**
1
1
七.关闭光标对象
cousor.close()
1
1
八.关闭数据库的链接对象
coon.cousor()
1
1
九.洛克王国宠物数据抓取案例
import requests
import pymysql
from lxml import etree
from time import sleep
# 数据库链接
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql')
cursor = conn.cursor()
# 执行一条创建表的操作
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,name varchar(50),src varchar(100),industry text)''')
url = ''
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = 'gbk'
html = response.text
# print(html)
# 宠物名称
# 宠物图片(图片在 lz_src)
# 宠物技能(跳转详细页)
tree = etree.HTML(html)
li_list = tree.xpath('//ul[@id="cwdz_list"]/li') # 所有的宠物
for li in li_list:
name = li.xpath('./@name')[0] # 每一个宠物的名称
src = 'http:' + li.xpath('./a/img/@lz_src')[0] # 图片链接
link = '' + li.xpath('./a/@href')[0] # 宠物的详细链接
industry = [] # 数组里面存放每一个对象,每一个对象就是一个技能
# 对详细链接发起请求,获取技能
try:
detail_resp = requests.get(url=link, headers=headers)
sleep(0.5)
detail_resp.encoding = 'gbk'
detail_tree = etree.HTML(detail_resp.text)
# 技能
skills = detail_tree.xpath('/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/table[4]/tbody/tr')
del skills[0]
del skills[0]
for skill in skills:
item = {}
item['name'] = skill.xpath('./td[1]/text()')[0] # 技能
item['grade'] = skill.xpath('./td[2]/text()')[0] # 等级
item['property'] = skill.xpath('./td[3]/text()')[0] # 属性
item['type'] = skill.xpath('./td[4]/text()')[0] # 类型
item['target'] = skill.xpath('./td[5]/text()')[0] # 目标
item['power'] = skill.xpath('./td[6]/text()')[0] # 威力
item['pp'] = skill.xpath('./td[7]/text()')[0] # pp
item['result'] = skill.xpath('./td[8]/text()')[0] # 效果
industry.append(item)
# print(industry)
# 数据保存 (mysql)
sql = '''insert into pets(name,src,industry) values (%s,%s,%s);'''
cursor.execute(sql, [name, src, str(industry)])
conn.commit()
print(f'{name}--保存成功!')
except Exception as e:
pass
cursor.close()
conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
十.总结
本章内容主要是给大家讲解一下在爬虫过程中如何将数据保存mysql数据库中去,
最后面这个案例就是一个示范,希望这篇文章能给大家带来帮助,都看到这里了给
个三连支持一下吧!!!
1
2
3
1
2
3
利用python爬虫技术可以做到哪些炫酷有趣的事?
之前在北京买房,谁想房价开始疯长,链家的房价等数据分析只给了一小部分,远远不能满足自己的需求。于是晚上花了几个小时的时间写了个爬虫,爬下了北京所有的小区信息及北京所有小区的所有历史成交记录。