【数据分析与挖掘】数据分析学习及跟课学习 | csdn_Part 03 编程部分 下篇

本文介绍了Python编程中自定义函数和网络爬虫的基础知识,包括匿名函数、自定义函数的定义和作用,以及网络爬虫的基本流程和常用库。强调了自定义函数在定制化需求和避免重复代码中的重要性,并提供了一个动态爬取天气数据的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做好事要趁白天,所以上次晚上没有整理完的部分除了直接补在上篇csdn_Part 03 编程部分 上篇以外,还需要把自定义函数及爬虫部分的给补上,今天最好把笔记全部补完!好推进下一部分,虽然数据分析理论知识并不作为编程的主要思想,但是配合统计学理论,在数据处理及后续发展中还是占很重的比例,所以需要提上日程。

【章节关键词】:匿名函数、自定义函数  |  爬虫三定义、基础爬虫


目录

第六章 自定义函数

匿名函数

自定义函数

第七章 网络爬虫的介绍与实践

网络爬虫的介绍


第六章 自定义函数

自定义函数有两个主要作用,①定制化需求;②避免重复编写代码。

匿名函数

定义 Lambda 关键字 没有名称 所有代码一行内完成

语法  lambda parameters : function_expression

         ↓ 关键字   ↓形参,多个用“,”隔开    ↓具体函数体

# e.g:统计元素次数并排序
list6 = ['A','A','B','C','A','B','A','B','A','B','A','B','C','B']
res = {}
for i in set(list6):
    res[i] = list6.count(i)
res

#第二种方式
list7 = ['A','A','B','C','A','B','A','B','A','B','A','B','C','B']
list7 = sort(key:lambda x:x[1],reverse=True)
#x[1]:取序列第二个元素 reverse=True:升序

自定义函数

使用场景:关键字 def(define),用来构造逻辑复杂的解决问题函数体

语法: def func_name(para):

                       语句

                       return

案例:猜数游戏

def guess_num(Min,Max):
    number = random.randint(Min,Max)
    while True:
        guess = int(input("请在{}与{}之间猜个数".format(Min,Max)))
        if guess < number:
            min = guess
            print('偏小,在{}到{}之间再猜'.format(min,max))
        elif guess > number:
            max = guess
            print('偏大,在{}到{}之间再猜'.format(min,max))
        else:
            print("猜对了!\n游戏结束")
            break #退出循环体def guess_num(Min,Max):
    number = random.randint(Min,Max)
    while True:
        guess = int(input(请在{}与{}之间猜个数).format(Min,Max))
        if guess < number:
            min = guess
            print('偏小,在{}到{}之间再猜'.format(min,max))
        elif guess > number:
            max = guess
            print('偏大,在{}到{}之间再猜'.format(min,max))
        else:
            print("猜对了!\n游戏结束")
            break #退出循环体

接下来,两个例子用来熟悉:

# Ex 10 1).计算圆的周长、面积、球的体积
#       2).构造多数据源,导入合并,读取并合成 两个函数[os.lisdir | pd.concat]

 练习没有敲,留待自行练习。

第七章 网络爬虫的介绍与实践

这章节的内容主要是为了理解爬虫的三个流程,包括基础网络爬虫的套路。

网络爬虫的介绍

定义:网络爬虫是按照一定规则,自动抓取万维网信息的程序式脚本。

典型应用:搜索引擎、今日头条、竞品分析

爬虫流程:

  1. 发送请求
  2. 返回请求
  3. 数据存储

涉及包和函数

import request(发送请求) | re(正则表达式匹配) | bs4(美丽汤包,解析网页)

request.get( ) | re.findall( ) | bs4.BeautifulSoup( )

案例(静态爬取):1) https:www.redbull.com.cn/about/tranch 抓取红牛分公司信息

# 关键匹配语句
re.findall('<h2>(.*?)</h2>',response.text) #匹配到标题
soup.findAll(name='p',attrs={'class':mailIcc}) # ← bs4 
# 便签清洗 i:text(infor结果)

2) 链家二手房信息

储存链接  / 获取结果(响应码 - 403/200) /反爬机制 请求头 伪造

# 关键匹配语句
total = [float(i.text[:-1] for i in suop.findAll(name='div',attrs={'class':totalPrice}))]
#     `
#     `
#     `

 这里针对练习扩展补充一些想法:

  • 可以做个小练习:爬取链家,并用网页展示结果(可视化),其中对结果排序,综合,应用租房信息
  • 其中涉及到的反爬机制,解决并写下思路过程,最好是到网络层传输层的理解
  • 将**/**/**等职位名称/多城市/条件,作为检索条件,爬取个性化结果,多源数据组合?

引入:动态和静态区别在于,下一页内容,动态加载数据的页面URL不变,而静态的URL做规律变化。

案例(动态爬取):天气提取,异步存储,一般使用Json,RHX,多文件实现,这里需要使用F12开发者模式(找到异步文件)

tianqi.2345.com/wea_history/58362.json →url(json)

# 关键匹配语句
re.findall('ymd:"[\d-]+"',response.text) #匹配到日期

这部分纸质笔记就整理完了。具体源码见github上。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值