PYTHON学习笔记之(一)2020.08

Python基础

数据类型

常见的列表、字典,以及元组、集合。

1 列表 list

  • 1.1 列表转换字符串
stu = ['王一', '李二', '张三']
print(stu)
nStu = ' - '.join(stu)
print(nStu)

[‘王一’, ‘李二’, ‘张三’]
王一 - 李二 - 张三

  • 1.2 字符串转列表
strT = 'a good day'
lst = strT.split(' ')
print(lst)

[‘a’, ‘good’, ‘day’]

2 字典 dictionary
-2.1 字典录入与输出

dicA = {'a': 'a', 'b': ' good', 'c': ' day'}
print(dicA['a'] + dicA['b'] + dicA['c'])

a good day

dicA = {'a': 'a', 'b': 'good', 'c': 'day'}
for i in dicA:print(i + ': ' + dicA[i])

a: a
b: good
c: day

3 元组 tuple
3.1 元组 元组数据不可以修改

tupA = ('a', 'b', 'c', 'd')
print(tupA[1:3])

(‘b’, ‘c’)

4 集合 set
4.1 集合 集合会自动去重复

setA = {'a', 'b', 'b'}
print(setA)

{‘a’, ‘b’}

运算符

运算符 + - * / > < >= <= == and or not,不一一举例

分支循环

1.if … else …
if 表达式:
code
else:
code

2.for i in 循环变量:
code

3.while 表达式:
code

异常处理

try:
code
except:
code

函数

def funName(参数):
code

常见内部函数:
str、int、len、replace、strip、 split

库的引用

import 库名
from 库名 import 功能/*

有时候引用的库没有需要安装,以下方式:
1.pip install 库名(前提条件安装了pip工具)
cmd 中 pip install requests

2.pycharm安装
File -> Settings


然后点击安装install package即可。

试试爬一个网页

import requests
res = requests.get('https://www.baidu.com').text
print(res)

爬虫基础

网页结构

1 查看网页源代码
F12键
主要使用选择以及元素选项

右键菜单
查看网页源代码
有时通过F12可以看到的内容,而通过右键菜单是看不到的,因为有些网页是通过动态渲染出来的。
F12看到的代码是经过渲染的。

2 网页结构
html
body
h:h1、h2、h3标题
p:段落
a:链接
table:表格
li:序号
img:图片
div:区块
class与id

获取网页源代码

import requests
res = requests.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=02003390_21_hao_pg&wd=疫情').text
print(res)

不可行,需要模拟浏览器发送访问请求。
可以通过requests.get()中的headers参数,模拟浏览器访问请求。
headers提供网站访问者的信息,User-Agent表示用户代理,是通过什么浏览器访问。
headers可以通过在浏览器中输入about:version查看,这里用的谷歌浏览器

修改后的代码如下

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/65.0.3325.181 Safari/537.36'}
res = requests.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=02003390_21_hao_pg&wd=疫情', headers=headers).text
print(res)

执行后便可以获取源代码信息。

分析网页源代码

1 F12键
开发者工具中“选择”选项,选择一个元素,可以在Elements中看到该标题的内容。

2 利用右键菜单
查看网页源代码

3 利用Python输出框
在获取到的源代码中查询

正则表达式

1 正则表达式findall()函数

import re
content = 'hello 123 world'
result = re.findall('\d', content)
print(result)

[‘1’, ‘2’, ‘3’]

正则表达式常用功能

符号 功能
\d 一个数字
\w 一个字母、数字、下划线
\s 一个空白符、换行符、制表符、空格
\S 匹配一个非空白符
\n 匹配一个换行符
\t 匹配一个制表符
. 匹配一个任意字符,除换行符
* 匹配0个或多个表达式
+ 匹配一个或多个表达式
? 非贪婪限定符,常与.和*配合使用
() 匹配括号内的表达式,也表示一个组

2 正则表达式非贪婪匹配
2.1 (.?)
其格式如下:
文本A(.
?)文本B
文本A百度新闻文本B

import re
content = '文本A百度新闻文本B'
reg = '文本A(.*?)文本B'
result = re.findall(reg, content)
print(result)

[‘百度新闻’]

2.2 匹配.
reg = '<h 3 class=“c-title”>.
?>(.?)’
.
?用于填充我们不关心的内容,其中是一些变化的不固定的内容,一直匹配到下一个“>”,并取得(.*?)这部分内容。

2.3考虑换行的修饰符re.S
re.findall(规则, 文本, re.S)

import re
content = '''
文本A百
度新
闻文本B
'''
reg = '文本A(.*?)文本B'
result = re.findall(reg, content, re.S)
print(result)

[‘百\n度新\n闻’]

2.4 re.sub函数
re.sub(’<.*?>’,’’, 待替换的字符串)

2.5 中括号[]用法
为了使. * + ?不再有特殊含义
re.sub(’[*]’, ‘’ ,待替换字符串)

数据提取小CASE

1.获取网页信息

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/65.0.3325.181 Safari/537.36'}
url = 'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&word=阿里巴巴'
res = requests.get(url, headers=headers).text
print(res)

2.提取新闻来源和日期
使用F12查看新闻来源标签

使用如下正则表达式

reg = '<span class="c-color-gray .*?>(.*?)</span>'

[‘AI财经社’, ‘鹿科技’, ‘网易新闻’, ‘腾讯网’, ‘网易新闻’, ‘新浪科技’, ‘腾讯网’, ‘北京日报客户端’, ‘四川经济网’, ‘新浪财经’]

reg = '<span class="c-color-gray2 .*?>(.*?)</span>'

[‘1小时前’, ‘2020年08月22日 14:49’, ‘2020年08月22日 21:56’, ‘2020年08月22日 00:00’, ‘2020年08月22日 17:41’, ‘2020年08月22日 15:35’, ‘2020年08月22日 00:00’, ‘2020年08月20日 20:17’, ‘2020年08月22日 16:06’, ‘2020年08月20日 20:57’]

3 提取网址和标题

regTitle = '<h3 class="news-title.*?<!--s-text-->(.*?)<!--/s-text--></a></h3>'
articleTitle = re.findall(regTitle, res, re.S)

[‘张勇彭蕾退出蚂蚁集团董事,新增包括阿里巴巴CTO等五名董事’, ‘阿里巴巴发布新财报,年度活跃用户量达7.42亿’, ‘阿里巴巴北京总部,公司太霸气了,带你先睹为快!’, ‘阿里云公布一季度财报 连续四季度强劲增长’, ‘阿里巴巴:长期主义的阶段胜利’, ‘信心基石阿里巴巴’, ‘阿里巴巴发布新一季财报,淘宝直播成交额翻倍增长’, ‘阿里巴巴:停止UCWeb及其他创新业务在印度服务’, ‘鹤壁阿里巴巴托管公司’, ‘刚刚阿里发布财报,这一次“猫狗大战”京东赢了?’]

regLink = '<h3 class="news-title.*?><a href="(.*?)"'
articleLink = re.findall(regLink, res, re.S)

[‘https://baijiahao.baidu.com/s?id=1675786144786316914&wfr=spider&for=pc’, ‘https://www.lukeji.com.cn/news/xls/21606.html’, ‘https://3g.163.com/news/article/FKLRM0640515D607.html’, ‘https://new.qq.com/omn/20200822/20200822A026GS00.html’, ‘http://dy.163.com/v2/article/detail/FKLD2R1H05199O51.html’, ‘https://new.qq.com/omn/20200822/20200822A0B5N200.html’, ‘http://tech.sina.com.cn/roll/2020-08-22/doc-iivhuipp0077223.shtml’, ‘http://www.scjjrb.com/syxw/e105511285.html’, ‘http://finance.eastmoney.com/a/202008221604220943.html’, ‘https://baijiahao.baidu.com/s?id=1675602491601591953&wfr=spider&for=pc’]

4 数据处理
有些特殊等字符不需要
去掉标题中的em标签

for i in range(len(articleTitle)):articleTitle[i] = re.sub('<.*?>', '', articleTitle[i])
print(articleTitle)

[‘张勇彭蕾退出蚂蚁集团董事,新增包括阿里巴巴CTO等五名董事’, ‘阿里巴巴发布新财报,年度活跃用户量达7.42亿’, ‘阿里巴巴北京总部,公司太霸气了,带你先睹为快!’, ‘阿里云公布一季度财报 连续四季度强劲增长’, ‘阿里巴巴:长期主义的阶段胜利’, ‘信心基石阿里巴巴’, ‘阿里巴巴:停止UCWeb及其他创新业务在印度服务’, ‘鹤壁阿里巴巴托管公司’, ‘BAT最新成绩单PK:阿里巴巴营收增速最快 百度掉队’, ‘阿里巴巴发布2021财年第一财季财报’]

这样数据准备OK
5 将它们拼接在一起

import requests
import reheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/65.0.3325.181 Safari/537.36'}
url = 'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&word=阿里巴巴'
res = requests.get(url, headers=headers).text
regP = '<span class="c-color-gray .*?>(.*?)</span>'
publisher = re.findall(regP, res, re.S)
regT = '<span class="c-color-gray2 .*?>(.*?)</span>'
issueTime = re.findall(regT, res, re.S)
regTitle = '<h3 class="news-title.*?<!--s-text-->(.*?)<!--/s-text--></a></h3>'
articleTitle = re.findall(regTitle, res, re.S)
regLink = '<h3 class="news-title.*?><a href="(.*?)"'
articleLink = re.findall(regLink, res, re.S)
for i in range(len(articleTitle)):articleTitle[i] = re.sub('<.*?>', '', articleTitle[i])print(str(i+1) + ' ' + articleTitle[i] + '\t' + publisher[i] + '\t' + issueTime[i] + '\n'+ articleLink[i])

1 张勇彭蕾退出蚂蚁集团董事,新增包括阿里巴巴CTO等五名董事 AI财经社 2小时前
https://baijiahao.baidu.com/s?id=1675786144786316914&wfr=spider&for=pc
2 阿里巴巴发布新财报,年度活跃用户量达7.42亿 鹿科技 2020年08月22日 14:49
https://www.lukeji.com.cn/news/xls/21606.html
3 阿里巴巴北京总部,公司太霸气了,带你先睹为快! 网易新闻 2020年08月22日 21:56
https://3g.163.com/news/article/FKLRM0640515D607.html
4 阿里云公布一季度财报 连续四季度强劲增长 腾讯网 2020年08月22日 00:00
https://new.qq.com/omn/20200822/20200822A026GS00.html
5 阿里巴巴:长期主义的阶段胜利 网易新闻 2020年08月22日 17:41
http://dy.163.com/v2/article/detail/FKLD2R1H05199O51.html
6 信心基石阿里巴巴 腾讯网 2020年08月22日 00:00
https://new.qq.com/omn/20200822/20200822A0B5N200.html
7 阿里巴巴:停止UCWeb及其他创新业务在印度服务 新浪科技 2020年08月22日 15:35
http://tech.sina.com.cn/roll/2020-08-22/doc-iivhuipp0077223.shtml
8 鹤壁阿里巴巴托管公司 四川经济网 2020年08月22日 16:06
http://www.scjjrb.com/syxw/e105511285.html
9 BAT最新成绩单PK:阿里巴巴营收增速最快 百度掉队 东方财富网 2020年08月22日 23:05
http://finance.eastmoney.com/a/202008221604220943.html
10 阿里巴巴发布2021财年第一财季财报 亿欧网 2020年08月21日 11:03
https://baijiahao.baidu.com/s?id=1675602491601591953&wfr=spider&for=pc

6 不间断爬取数据
while True:无限循环
time.sleep(3600):每小时一次 需要引入import time包

7 爬取多页数据
手动选择下一页按钮会发现网站后面拼接“&pn=10”
这部分可以写的循环里面即可。

8 设置超时设置 timeout

res = requests.get(url, headers=headers, timeout=10).text #其中10是10秒。

如果超过10秒就会异常
可以用try except进行异常处理

数据库的使用

Python支持数据库

传统数据库
IBM DB2
Firebird (and Interbase)
Informix
Ingres
MySQL
Oracle
PostgreSQL
SAP DB (also known as “MaxDB”)
Microsoft SQL Server
Microsoft Access
Sybase

数据仓库
Teradata
IBM Netezza

其他数据库

可以参考
Python数据库接口及API

这里先介绍mysql数据库。

数据库安装

这里安装WampServer,是Apache Web服务器、PHP解释器及MySQL数据库的软件包整合
我用的是联想自带的电脑管家,上图

数据库基础

mysql数据库基础

菜鸟教程

简介
MySQL是最流行的关系型数据库管理系统,在WEB 应用方面 MySQL是最好的RDBMS应用软件之一。

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,所以你不需要支付额外的费用。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

数据库管理

  • USE 数据库名 :选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
  • SHOW DATABASES: 列出 MySQL 数据库管理系统的数据库列表。
  • SHOW TABLES:显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
  • SHOW COLUMNS FROM 数据表:显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
  • SHOW INDEX FROM 数据表:显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
  • SHOW TABLE STATUS LIKE [FROM db_name] [LIKE ‘pattern’] \G: 该命令将输出Mysql数据库管理系统的性能及统计信息。
  • mysql -u root -p:命令行中连接mysql服务器
  • 使用 exit 命令
  • CREATE DATABASE 数据库名;使用 create 命令创建数据库
  • drop 命令删除数据库 drop database <数据库名>;
  • 选择数据库 USE 数据库名
类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

创建数据表

CREATE TABLE IF NOT EXISTS `runoob_tbl`(`runoob_id` INT UNSIGNED AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,`runoob_author` VARCHAR(40) NOT NULL,`submission_date` DATE,PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

删除数据表
DROP TABLE table_name ;

插入数据表

INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );

查询数据表
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

正则表达式
MySQL可以通过 LIKE …% 来进行模糊匹配。

SELECT name FROM person_tbl WHERE name REGEXP '^st';
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

显示创建表语句
使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。

SHOW CREATE TABLE TABLE_NAME

临时表
MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
CREATE TEMPORARY TABLE SalesSummary

导出数据
MySQL中你可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。

SELECT * FROM runoob_tbl INTO OUTFILE '/tmp/runoob.txt';
SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

Python与数据库交互

创建数据库链接

import pymysqldb = pymysql.connect('localhost', 'root', '123456', 'test', charset='utf8')
cur = db.cursor()
cur.execute('SELECT * FROM TEST1')
data = cur.fetchall()
for i in data:print(i)

#创建数据库连接
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码,存在中文的时候,连接需要添加charset=‘utf8’,否则中文显示乱码。

connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务,不然无法保存新建或者修改的数据
rollback() 回滚当前事务
close() 关闭连接

cursor对象支持的方法
execute(op) 执行SQL,并返回受影响行数
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象

Python从数据库中查询数据

import pymysqldb = pymysql.connect('localhost', 'root', '123456', 'test', charset='utf8')
cur = db.cursor()
sql = 'SELECT ID, NAME FROM TEST1'
cur.execute(sql)
dataS = cur.fetchall()
for row in dataS:ID = row[0]NAME = row[1]print("ID: %s NAME: %s" % (ID, NAME))

ID: 1 NAME: wangyi
ID: 2 NAME: liuer
ID: 3 NAME: zhangsan

爬虫数据存入数据库

将之前爬取的新闻数据存储至MYSQL数据库中。中文报错。

import requests
import re
import pymysqldb = pymysql.connect('localhost', 'root', '123456', 'test', charset='utf8')
cur = db.cursor()
sqlC = 'CREATE TABLE NEWS(ID INT, TITLE VARCHAR(100), NEWS_FROM VARCHAR(100),   NEWS_TIME VARCHAR(100), URL VARCHAR(' \'200)) '
cur.execute(sqlC)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/65.0.3325.181 Safari/537.36'}
keyW = '京东'
url = 'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&word=' + keyW
res = requests.get(url, headers=headers).text
regP = '<span class="c-color-gray .*?>(.*?)</span>'
publisher = re.findall(regP, res, re.S)
regT = '<span class="c-color-gray2 .*?>(.*?)</span>'
issueTime = re.findall(regT, res, re.S)
regTitle = '<h3 class="news-title.*?<!--s-text-->(.*?)<!--/s-text--></a></h3>'
articleTitle = re.findall(regTitle, res, re.S)
regLink = '<h3 class="news-title.*?><a href="(.*?)"'
articleLink = re.findall(regLink, res, re.S)
for i in range(len(articleTitle)):articleTitle[i] = re.sub('<.*?>', '', articleTitle[i])sqlI = "INSERT INTO NEWS VALUES('%s','%s','%s','%s','%s')" % (str(i + 1), str(i + 1), str(i + 1), str(i + 1), articleLink[i])print(sqlI)cur.execute(sqlI)

INSERT INTO NEWS VALUES(‘1’,‘1’,‘1’,‘1’,‘https://baijiahao.baidu.com/s?id=1675899921747255219&wfr=spider&for=pc’)
INSERT INTO NEWS VALUES(‘2’,‘2’,‘2’,‘2’,‘https://www.huxiu.com/article/377664.html’)
INSERT INTO NEWS VALUES(‘3’,‘3’,‘3’,‘3’,‘https://baijiahao.baidu.com/s?id=1675900475950715933&wfr=spider&for=pc’)
INSERT INTO NEWS VALUES(‘4’,‘4’,‘4’,‘4’,‘http://news.iresearch.cn/yx/2020/08/335737.shtml?tdsourcetag=s_pcqq_aiomsg’)
INSERT INTO NEWS VALUES(‘5’,‘5’,‘5’,‘5’,‘https://baijiahao.baidu.com/s?id=1675899543403969245&wfr=spider&for=pc’)
INSERT INTO NEWS VALUES(‘6’,‘6’,‘6’,‘6’,‘https://baijiahao.baidu.com/s?id=1675899736117792298&wfr=spider&for=pc’)
INSERT INTO NEWS VALUES(‘7’,‘7’,‘7’,‘7’,‘https://new.qq.com/rain/a/20200824A0F2T700’)
INSERT INTO NEWS VALUES(‘8’,‘8’,‘8’,‘8’,‘https://tech.sina.com.cn/csj/2020-08-24/doc-iivhuipp0406538.shtml’)
INSERT INTO NEWS VALUES(‘9’,‘9’,‘9’,‘9’,‘https://baijiahao.baidu.com/s?id=1675893782003656055&wfr=spider&for=pc’)
INSERT INTO NEWS VALUES(‘10’,‘10’,‘10’,‘10’,‘http://finance.eastmoney.com/a/202008241605671671.html’)

数据清洗

关于中文乱码
decode()和encode()函数。

数据分析NumPy与pandas

NumPy库

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

Numpy
Numpy源代码
Scipy
Scipy源代码
Matplotlib
Matplotlib源代码

数据可视化

数据挖掘

解析PDF

解析图片

解析表格

Python与Word

Python与Excel

数据分析决策

邮件系统

服务器部署

机器学习

未完待续

PYTHON学习笔记之(一)2020.08相关推荐

  1. Python学习笔记:常用内建模块6 (urllib)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  2. python学习笔记(14)参数对应

    python学习笔记(14)参数对应 原链:http://www.cnblogs.com/vamei/archive/2012/07/08/2581264.html 笔记: 1 #第14讲 2 #参数 ...

  3. python爬虫之b站视频下载(python学习笔记)

    b站视频爬取(python学习笔记) 亲爱的b站自从在2020年3月23日将av号改为BV号后,之前的很多爬虫已经不能用了,暂时没看懂这操作的意义何在,反而一大串大小写英文字母加数字的BV号让人很难记 ...

  4. Python学习笔记13_模块

    Python学习笔记13_模块 文章目录 Python学习笔记13_模块 1.导入模块和的方法及使用 2.分层的文件系统中常用的包结构 3.OS 模块 4.sys 模块 5.math 模块 6.ran ...

  5. python学习笔记(一)Python 简单介绍

    Python学习笔记(一)Python 简单介绍 Python介绍 Python简介 Python应用领域 Python是解释型的语⾔ 编译和解释的区别是什么? 编译型vs解释型 编译型 解释型 Py ...

  6. Python学习笔记 day5

    Python学习笔记 day5 参考/引用资料: 1.file a.打开文件方式(读写两种方式) 缓冲 with语句 b.文件对象的操作方法 c.学习对excel及csv文件进行操作 读写excel ...

  7. Python学习笔记:第十五站 大宝藏

    Python学习笔记 文章目录 Python学习笔记 第十五站 大宝藏 1. 编码格式介绍 2. 文件的读写原理 3. 文件读写操作 4. 文件对象常用的方法 5. with语句(上下文管理器) 6. ...

  8. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  9. Python学习笔记Day 2

    Python学习笔记 Day 2 初识库(模块) pyc文件与PyCodeObject文件 数据类型 列表(数组) 一维 二维 元组(只读数组) 程序练习 字符串 字典 注: 运用 增减删找查 .ke ...

最新文章

  1. Python数据类型之列表操作方法
  2. 实用计算机技术选修,实用计算机组装与维护选修课学习心得
  3. 基于面板数据的熵值法
  4. Go 面向对象之结构体
  5. c6011取消对null指针的引用_C++| 函数的指针参数如何传递内存?
  6. Android MediaRecorder录制视频提示start failed的解决办法
  7. poj2186【利用强连通分量】
  8. python画好看的图-Python竟能画这么漂亮的花,帅呆了(代码分享)
  9. 转:施炜:铁军组织是怎样炼成的?高能组织=人×管理体系×数字标准
  10. 分形--朱利亚集合图形2
  11. 【产业互联网周报】微软、谷歌再布局边缘云;美团放弃公有云业务;开普云登陆科创板...
  12. 为什么未来是全栈工程师的世界?
  13. 华为防火墙用户与认证
  14. Android studio设计一个简易微信界面
  15. python的self使用
  16. python plt画图_【Python】 【绘图】plt.figure()的使用
  17. 人人都是产品经理之用Axure制作微信主页原型图
  18. jdbc连接orcle数据库_JDBC连接Oracle数据库简单步骤
  19. Python 的 sum():Pythonic 的求和方法
  20. 第13周项目1—动物这样叫2.3

热门文章

  1. 吞吐量 反应时间 延时 抖动 丢包 概念解释
  2. iOS App审核遇到的问题(持续更新)
  3. 基于Nios-II的流水灯实验
  4. COVID-19 Cases Prediction (Regression)
  5. Kitty中的动态线程池支持Nacos,Apollo多配置中心了
  6. 网络知识总结二:物理层和链路层协议详解
  7. 无障碍开发系列之准则及评级
  8. 极海推出APM32A系列车规级MCU
  9. python小程序短信发送助手
  10. ant design pro v2 - 权限控制