9.1 数据库操作的基础知识和常用模块
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。它的出现是为了解决数据存储和访问的问题,可以方便地对数据进行操作、管理和维护。
常用的数据库类型
常见的数据库类型包括关系型数据库(如MySQL、Oracle、SQL Server)、非关系型数据库(如MongoDB、Redis、Memcached)等。
数据库操作的基本概念
数据库操作包括增加、删除、修改、查询等操作。其中,增加数据使用 INSERT INTO 语句,删除数据使用 DELETE FROM 语句,修改数据使用 UPDATE 语句,查询数据使用 SELECT 语句。
数据库操作的常用模块
在Python中,我们可以使用以下模块来进行数据库操作:
- sqlite3:Python自带的轻量级数据库,可以方便地进行增删改查等操作。
- MySQLdb:用于连接MySQL数据库的第三方模块,支持多种数据类型的转换和数据的高效读写。
- psycopg2:用于连接PostgreSQL数据库的第三方模块,支持多种数据类型的转换和数据的高效读写。
- pymongo:用于连接MongoDB数据库的第三方模块,支持NoSQL数据库的特性,如动态数据模型和高可用性等。
使用sqlite3进行数据库操作的示例
以下示例演示了如何使用sqlite3进行数据库操作:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 创建表格
conn.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
# 插入数据
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00)")
# 查询数据
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3])
# 更新数据
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
# 删除数据
conn.execute("DELETE from COMPANY where ID = 1;")
conn.commit()
# 关闭连接
conn.close()
在上述示例中,我们首先通过 sqlite3.connect()
函数连接到数据库,然后使用 conn.execute()
函数执行SQL语句,包括创建表格、插入数据、查询数据、更新数据和删除数据等操作。最后,我们使用 conn.close()
函数关闭连接,释放资源。
总结
本节我们介绍了数据库操作的基础知识和常用模块,以及使用sqlite3进行数据库操作的示例。熟练掌握数据库操作可以帮助我们更好地进行数据管理和分析。
9.2 爬虫的概念和基础知识
什么是爬虫?
爬虫(Crawler)是一种自动化程序,用于在互联网上自动获取和抓取信息。爬虫可以自动访问网站、下载网页、提取数据等,是数据采集、信息分析和业务应用的重要工具。
爬虫的基本流程
爬虫的基本流程包括网页下载、网页解析和数据处理等步骤。具体来说,包括以下几个步骤:
- 发送请求:爬虫程序向目标网站发送 HTTP 请求,请求获取网页内容。
- 下载网页:目标网站接收到请求后,返回相应的 HTML 页面,爬虫程序将其下载到本地。
- 解析网页:爬虫程序对下载的网页进行解析,提取出需要的数据。
- 存储数据:爬虫程序将提取出的数据存储到数据库或文件中。
爬虫的常用模块
在Python中,我们可以使用以下模块来进行爬虫开发:
- Requests:用于发送 HTTP 请求,获取网页内容。
- BeautifulSoup:用于解析 HTML 页面,提取数据。
- Scrapy:用于构建爬虫框架,实现网页下载、解析和数据处理等功能。
- Selenium:用于模拟浏览器操作,支持动态网页的爬取。
使用Requests和BeautifulSoup进行爬虫的示例
以下示例演示了如何使用Requests和BeautifulSoup进行爬虫开发:
import requests
from bs4 import BeautifulSoup
# 发送请求并获取网页内容
url = 'https://www.python.org/'
response = requests.get(url)
# 解析网页并提取数据
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.string
links = []
for link in soup.find_all('a'):
links.append(link.get('href'))
# 打印结果
print('网页标题:', title)
print('网页链接:', links)
在上述示例中,我们首先使用 requests.get()
函数发送 HTTP 请求,获取 Python 官网的 HTML 页面。然后,使用 BeautifulSoup()
函数解析网页,提取出网页标题和所有链接,并将结果打印输出。
总结
本节我们介绍了爬虫的概念和基础知识,以及使用Requests和BeautifulSoup进行爬虫开发的示例。熟练掌握爬虫开发可以帮助我们更好地获取和利用互联网上的信息资源。
9.3 使用Python进行简单的爬虫开发
本节将介绍如何使用Python进行简单的爬虫开发,获取指定网站的信息。
1. 安装必要的库
首先,我们需要安装必要的库,包括Requests、BeautifulSoup和pandas等。可以使用以下命令进行安装:
pip install requests
pip install beautifulsoup4
pip install pandas
2. 发送HTTP请求并获取网页内容
在Python中,我们可以使用Requests库发送HTTP请求,获取网页内容。以下代码演示了如何获取百度搜索结果页面的内容:
import requests
url = 'https://www.baidu.com/s'
params = {'wd': 'Python'}
response = requests.get(url, params=params)
print(response.text)
在上述代码中,我们首先定义了目标网站的URL和查询参数。然后,使用 requests.get()
函数发送HTTP请求,并通过 response.text
属性获取网页内容。
3. 解析HTML页面并提取数据
获取网页内容后,我们需要解析HTML页面,提取出需要的数据。在Python中,我们可以使用BeautifulSoup库进行HTML页面解析。以下代码演示了如何使用BeautifulSoup提取百度搜索结果页面的所有搜索结果:
import requests
from bs4 import BeautifulSoup
url = 'https://www.baidu.com/s'
params = {'wd': 'Python'}
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find_all('div', class_='result')
for result in results:
title = result.h3.a.string
link = result.h3.a.get('href')
print(title)
print(link)
在上述代码中,我们首先使用BeautifulSoup解析网页内容,然后使用 find_all()
方法查找所有搜索结果的 div
元素,并通过 h3
标签提取出标题和链接。
4. 存储提取的数据
提取数据后,我们可以将其存储到本地文件或数据库中。以下代码演示了如何使用pandas库将提取的搜索结果数据存储到CSV文件中:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.baidu.com/s'
params = {'wd': 'Python'}
response = requests.get(url, params=params)
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find_all('div', class_='result')
data = []
for result in results:
title = result.h3.a.string
link = result.h3.a.get('href')
data.append({'title': title, 'link': link})
df = pd.DataFrame(data)
df.to_csv('search_results.csv', index=False)
在上述代码中,我们首先使用pandas库创建一个DataFrame对象,将提取的搜索结果数据存储到其中。然后,使用 to_csv()
方法将DataFrame对象保存为CSV文件。
总结
本节介绍了如何使用Python进行简单的爬虫开发,包括发送HTTP请求、解析HTML页面和存储提取的数据。熟练掌握这些技能可以帮助我们更好地获取和利用互联网上的信息资源。