主要内容:
下载文件,存储数据;
MySQL的基本使用,发送邮件。
存储数据
网络数据的采集,最本质的东西还是数据,我们爬取的数据是需要存储的。
媒体文件
存储媒体文件有两种主要的方式:只获取文件 URL
链接,或者直接把源文件下载下来。
可以通过媒体文件所在的URL
链接直接引用它。这样做的优点如下:
- 爬虫运行得更快,耗费的流量更少,因为只要链接,不需要下载文件;
- 可以节省很多存储空间,因为只需要存储
URL
链接就可以; - 存储
URL
的代码更容易写,也不需要实现文件下载代码; - 不下载文件能够降低目标主机服务器的负载。
于此同时还会有一些缺点:
- 网站防盗链的问题,会带来很多的麻烦;
- 自主性较差,因为文件在别人的服务器上,可支配性差;
- 链接可能是会变化的,失效的链接数增加。
- ….
下载文件的方法也很简单,在Python 3.x
版本中,urllib.request.urlretrieve
可以根据文件的 URL
下载文件;
例如我们从http://pythonscraping.com
下载 logo
图片,然后在程序运行的文件夹里保存为 logo.jpg
文件。
1 | from urllib.request import urlretrieve |
下载文件需要注意exe的文件,木马文件等。不要在硬盘存储敏感信息,不要用管理员权限运行他。
把数据存储到CSV
CSV
(Comma-Separated Values
,逗号分隔值)是存储表格数据的常用文件格式。关于CSV
格式的文件不做过多的介绍,自行去了解一下。
Python
的csv
库可以创建或者修改CSV
文件。
1 | import csv |
如果文件不存在就会创建demo.csv。
MySQL
MySQL
是目前最受欢迎的开源关系型数据库管理系统。因为它受众广泛,免费,开箱即用,所以它也是网络数据采集项目中常用的数据库。
我采用的是Mac
的平台,可以直接下载安装安装也可以通过包管理器(例如homebrew
)安装。
其他的平台可以去官网查看安装详情,作为一个改变世界的程序猿,安装软件应该不是问题。
基本命令
创建数据库:
1 | CREATE DATABASE demo; |
使用数据库:
1 | USE demo; |
创建表:
1 | CREATE TABLE user( |
和数据库不同,MySQL
数据表必须至少有一列,否则不能创建。为了在 MySQL
里定义字段(数据列),你必须在 CREATE TABLE <tablename>
语句后面,把字段的定义放进一个带括号的、内部由逗号分隔的列表。
插入数据:
1 | INSERT INTO user (name, sex) VALUES ("name", "1"); |
查询数据:
1 | SELECT * FROM user |
模糊查询:
1 |
|
删除数据:
1 | DELELT FROM user WHERE id = 1 |
更新数据:
1 | UPDATE user SET name = 'chensenlin' WHERE id = 66 |
特别强调:更新或者删除一定要加条件!否则就说灾难,哈哈哈
与Python整合
Python
没有内置的MySQL
支持工具。不过,有很多开源的库可以用来与 MySQL
做交互,Python 2.x
和Python 3.x
版本都支持。最有名的一个库就是PyMySQL(https://github.com/PyMySQL/PyMySQL)
。
安装:
1 | pip install PyMySQL |
基本使用:
1 | import pymysql |
Python
发送一封邮件:
1 | import smtplib |
与网页通过HTTP
协议传输一样,邮件是通过SMTP
(Simple Mail Transfer Protocol
,简单邮件传输协议)传输的。而且,和网络服务器的客户端(浏览器)处理那些通过 HTTP
协议传输的网页一样。
可以将其封装成函数作为发送邮件定时使用等。