匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

Python爬虫实战指南:如何爬取数据并存储到数据库

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库,掌握以上技术点可以为以后的数据分析提供更多的数据来源。