Python爬虫实战指南:如何爬取数据并存储到数据库
在数据时代,数据分析越来越受到重视,而数据的获取则成为了数据分析中重要的一环。例如,如果我们需要对某个网站的数据进行分析,我们可以使用Python爬虫来获取该网站的数据,然后存储到数据库中进行后续的分析。
在本篇文章中,我们将介绍如何使用Python爬虫来获取网站的数据,并将数据存储到本地的MySQL数据库中。
知识点概述:
1. Python爬虫库:requests、BeautifulSoup、re、pymysql
2. MySQL数据库的基本操作:连接数据库、创建表、插入数据、查询数据
环境配置:
在开始之前,需要安装Python3以及相应的爬虫库requests、BeautifulSoup、re和MySQL数据库的Python操作库pymysql。
爬取数据:
首先我们需要了解需要爬取的网站的数据结构,并找到我们需要的数据所在的HTML标签及其属性。在本次实战中,我们以电商网站为例,爬取该网站商品的名称、价格和评论数。
首先,我们通过requests库向指定网址发送请求:
```python
import requests
url = "https://www.example.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
```
接着,我们可以使用BeautifulSoup库来解析网页HTML,并获取我们需要的数据:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('div', class_='item')
for item in items:
name = item.find('a', class_='name').text
price = item.find('span', class_='price').text
comment_num = item.find('span', class_='comment_num').text
```
这里将解析得到的数据存储在变量name、price和comment_num中,我们可以使用正则表达式(re)对数据进行进一步处理。例如,如果需要将价格转换为浮点数,我们可以使用以下代码:
```python
import re
price = float(re.search(r'\d+.\d+', price).group())
```
存储到数据库:
数据爬取完成后,我们需要将爬取得到的数据存储到本地的MySQL数据库中,方便后续的查询和分析。
首先,我们需要安装MySQL数据库,并创建一个数据库和数据表用于存储爬取得到的数据。这里假设我们已经创建了名为example的数据库和名为items的数据表。
使用pymysql库连接数据库后,我们可以通过以下代码将数据添加到数据表中:
```python
import pymysql
db = pymysql.connect(host='localhost', user='root', password='password', database='example', port=3306)
cursor = db.cursor()
for item in items:
name = item.find('a', class_='name').text
price = float(re.search(r'\d+.\d+', item.find('span', class_='price').text).group())
comment_num = int(item.find('span', class_='comment_num').text)
sql = "INSERT INTO items(name, price, comment_num) VALUES('%s', '%f', '%d')" % (name, price, comment_num)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
```
在以上代码中,我们首先通过pymysql库连接到数据库,然后使用INSERT语句将数据添加到数据表中。注意,拼接INSERT语句时需要注意数据类型的转换和SQL注入的问题。
结论:
本篇文章介绍了如何使用Python爬虫来爬取网站的数据,并将数据存储到本地的MySQL数据库中。在技术实现上,我们使用了requests、BeautifulSoup、re和pymysql等Python库,掌握以上技术点可以为以后的数据分析提供更多的数据来源。