Python爬虫和数据可视化

本文详细介绍了Python编程的基础,包括字符串、列表、文件操作和错误处理。重点讲解了Python爬虫的基本流程、常用模块如urllib和BeautifulSoup的使用,并通过实例爬取豆瓣Top250电影数据。最后,探讨了数据保存至Excel和SQLite,以及利用Flask和Echarts进行数据可视化的方法。
摘要由CSDN通过智能技术生成

一、字符串

1、字符串里的转义符
转义字符 描述
(在行尾时) 续行符
\\ 反斜杠符号
\’ 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\000
\n 换行
\t 横向制表符
\r 回车
\v 纵向制表符
\f 换页
2、字符串的输出
str_1 = "chengdudexiaojiuguan"

print(str_1[:5])				# 显示从开头到第四个
print(str_1 + "是我的")			# 字符串拼接
print(str_1 * 3)				# 字符串成倍显示
print("Hello\nxiaomeng")		# 中间有 \n ,换行
print(r"Hello\nxiaomeng")		# 当开头有一个 r , 后面的转义符都不生效,显示原始字符串

--->
cheng
chengdudexiaojiuguan是我的
chengdudexiaojiuguanchengdudexiaojiuguanchengdudexiaojiuguan
Hello
xiaomeng
Hello\nxiaomeng
3、字符串常见操作
str_3 = "12345abcde"

print(str_3.isalnum())		# 字符串中至少一个字符且所有字符包含字母或数字
print(str_3.isalpha())		# 字符全是字母
print(str_3.isdigit())		# 字符全是数字
print(len(str_3))			# 字符串长度
print(','.join(str_3))		# 将 , 加入到str_3字符串中, 即用 , 分割str_3
-->
True
False
False
10
1,2,3,4,5,a,b,c,d,e
函数 作用
lstrip() 删除字符串左边的空格或指定字符
rstrip() 删除字符串末尾的空格
rsplit() 删除两边的空格,并返回一个列表
split() 拆分成n个字符串

二、列表

1、常用操作
操作名称 操作方法 举例
访问列表中的元素 通过下标 print(list[0])
列表切片 使用[: :] list[2:5:2]
遍历列表 通过for循环 for i in liist: print(i)
【增】新增数据到列表末尾 使用append方法 list.append(5)
【增】列表的追加 使用entend方法 list.extend(list_2)
【增】列表数据插入 使用insert方法 list.insert(1,3)
【删】列表的删除 del:通过索引删除指定位置的元素
remove:移除列表中指定值的第一个匹配值,
没找到会抛异常
del list[1]
list.remove(1)
注意两种方法的区别
删除列表尾部的元素 使用pop list.pop()
【改】更新列表中的数据 通过下标原地修改 list[0]
【查】列表成员的关系 in、not in 2 in list
列表的加法操作 + list3 = list1 + list2
【排】列表的排序 sort方法 list.sort()
【排】列表的反转 reverse list.reverse()
a = [1, 2]
b = [3, 4]
a.append(b)			# 将b列表作为一个元素加入a列表
print(a)

a.extend(b)			# 将整个列表插入另一个列表
print(a)

c = [0, 1, 2]
c.insert(1, 5)		# 指定下标位置插入元素
print(c)

--->
[1, 2, [3, 4]]
[1, 2, [3, 4], 3, 4]
[0, 5, 1, 2]
movelists = ['加勒比海盗', '肖申克的救赎', '教父', '阿甘正传', '战狼2', '复仇者联盟4']

del movelists[2]			# 指定位置删除元素
print(movelists)

movelists.pop()				# 删除末尾的元素
print(movelists)

movelists.remove('战狼2')	# 直接删除指定内容
print(movelists)

--->
['加勒比海盗', '肖申克的救赎', '阿甘正传', '战狼2', '复仇者联盟4']
['加勒比海盗', '肖申克的救赎', '阿甘正传', '战狼2']
['加勒比海盗', '肖申克的救赎', '阿甘正传']
girl_lists = ['XiangMei', 'ZhaoXiaomeng', 'SunKaixin', 'LiuJiawen', 'HouRuijuan']
print(girl_lists)
girl_lists[1] = "PingEr"		# 修改指定下标的元素
print(girl_lists)

--->
['XiangMei', 'ZhaoXiaomeng', 'SunKaixin', 'LiuJiawen', 'HouRuijuan']
['XiangMei', 'PingEr', 'SunKaixin', 'LiuJiawen', 'HouRuijuan']
# 【in, not in】
girl_lists = ['XiangMei', 'ZhaoXiaomeng', 'SunKaixin', 'LiuJiawen', 'HouRuijuan']
name = input("请输入你女朋友的名字:")

if name not in girl_lists:
    print("还需努力呀")
else:
    print("干的好")

print(girl_lists.index('SunKaixin', 1, 4))	# 在下标1~4范围内查找'SunKaixin',返回下标

三、文件操作

1、文件的打开

使用open函数,可以打开一个一存在的文件,或者创建一个新文件

f = open('text.txt', 'w')

f.close()       # 关闭文件

说明:

访问模式 说明
r 以只读方式打开文件。文件指针会放在文件的开头。这也是默认模式
w 打开一个文件只用于写入。若文件存在则将其覆盖,若不存在则创建新文件
a 打开一个文件用于追加。若文件已存在,文件指针将放在文件末尾。新的内容将放在现存内容之后
若不存在,则创建新文件写入
rb 以二进制格式打开一个文件用于只读。文件指针会放在文件开头。这是默认模式
wb 以二进制格式打开一个文件只用于写入。若文件存在将其覆盖,若不存在则创建新文件
ab 以二进制格式打开打开一个文件用于追加。若文件存在,文件指针放在文件末尾,即新内容会写入到现存内容之后
若文件不存在,创建新文件进行写入
r+ 打开一个文件用于读写。文件指针会放在文件开头
w+ 打开一个文件用于读写。若文件存在将其覆盖,若不存在,创建新文件
a+ 打开一个文件用于读写。若文件存在,文件指针会放在文件末尾。文件打开时会是追加模式。若文件不存在,创建文件用于读写
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件开头
wb+ 以二进制格式打开一个文件用于读写。文件已存在则将其覆盖。文件不存在则创建新文件
ab+ 一二进制格式打开一个文件用于追加。若文件存在,文件指针会放在文件的结尾。若文件不存在,则创建新文件用于读写
2、文件写入
# 文件写入
f = open('text.txt', 'w')
text = '''
I heard, that your settled down.   
听说 你心有所属
That you, found a girl and your married now.
你遇到了她,即将步入婚姻殿堂
I heard that your dreams came true.   
听说你美梦成真
Guess she gave you things, I didn't give to you.   
看起来与我相比,她才是最好的
'''
f.write(text)       # 将内容写入文件
f.close()           # 关闭文件
3、文件读取
# 文件读取		按字符
f = open('text.txt', 'r')

content = f.read(5)
print(content)
content = f.read(10)
print(content)

f.close()
# 文件读取		按行
f = open('text.txt' ,'r')
content = f.readlines()		# 一次性读取全部文件为列表,每行一个字符串元素

i = 1
for temp in content:
    print("%d:%s" %(i,temp), end="")
    i += 1

f.close()
4、文件的其他不太常用的操作
4.1、文件的重命名

os模块中的rename()可以完成对文件的重命名操作

import os
os.rename("text.txt","some_like_you")
4.2、文件删除

os模块中的remove()模块可以对文件完成删除操作

import os
os.remove("text.txt")

四、错误与异常

1、出现异常
open('123.txt', 'r')

--->
Traceback (most recent call last):
  File "D:\python3.9\项目1\day20_shixun\demo2\异常处理.py", line 7, in <module>
    open('123.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: '123.txt'
2、分类捕获异常
try:
    print(num)
    f = open('123.txt', 'r')
except IOError as e:
    print('没找到文件', e)
except NameError as e:
    print('输出的东东没有定义', e)

--->
输出的东东没有定义 name 'num' is not defined    
3、捕获全部异常
try:
    print(num)
    f = open('123.txt', 'r')
except Exception as e:				# 将所有的错误类型承接到Exception
    print('出现错误了', e)

--->
出现错误了 name 'num' is not defined
4、finally输出
name = ['lishang','zhaoxiaomeng']

try:
    name[3]
except KeyError as e:
    print("没有这个key:",e)
except IndexError as e:
    print("超出列表范围:",e)
except Exception as e:
    print("出错了,位置错误:",e)
else:
    print("一切正常")
finally:
    print("不管有没有错误都执行")

五、Python爬虫

1、任务介绍

爬取豆瓣电影Top10的基本信息,包括电影的名称、豆瓣评分、评价数、电影概况、电影链接等。

2、基本流程

准备工作:
通过浏览器查看分析目标网页,学习编程基础规范

获取数据:
通过HTTP库向目标站点发起请求,请求可以包含额外的header等信息,如果服务器能正常响应,会得到一个Response,便是所要获取的页面内容。

解析内容:
得到的内容可能是HTML,Json等格式,可以用页面解析库正则表达式等进行解析。

保存数据:
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。
网址链接:https://movie.douban.com/top250

3、引入模块

3.1、补充urllib

对返回的网页源码进行utf-8的解码

import urllib.request
import urllib.parse
import urllib.error

# 获取一个get请求
response1 = urllib.request.urlopen("http://www.baidu.com")
print(response1.read().decode('utf-8'))

# 获取一个 post 请求
data = bytes(urllib.parse.urlencode({
   "hello":"world"}), encoding="utf-8")
response2 = urllib.request.urlopen("http://httpbin.org/post", data=data)
print(response2.read().decode('utf-8'))

# 获取一个 get 请求
try:
    # 超时处理
    response3 = urllib.request.urlopen("http://httpbin.org/get", timeout=0.1)
    print(response3.read().decode('utf-8')
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值