python+selenium爬取微博热搜存入Mysql的实现方法

yizhihongxing

下面是“python+selenium爬取微博热搜存入Mysql的实现方法”的详细攻略:

1. 准备工作

安装 Selenium

Selenium 是 Python 的一种库,用于浏览器自动化测试,可以自动在浏览器中打开网页、模拟人类操作,从而实现自动化获取网页的效果。我们可以通过以下命令来安装 Selenium:

pip install selenium

安装浏览器驱动

Selenium 需要依赖浏览器驱动,因此需要下载并安装浏览器驱动。本文以 Chrome 浏览器为例,需要下载对应的 Chrome 浏览器驱动,并添加到环境变量中。

下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

安装 PyMySQL

PyMySQL 是 Python 语言操作 MySQL 数据库的库,可以通过以下命令来安装:

pip install PyMySQL

2. 编写代码

导入依赖库

import time
import pymysql
from selenium import webdriver

其中,time 是 Python 自带的一个库,可以用于进行时间延迟操作。

打开浏览器并访问页面

driver = webdriver.Chrome()
driver.get('https://s.weibo.com/top/summary')

以上代码会打开一个 Chrome 浏览器窗口,并访问微博热搜榜的页面。

等待页面加载完成

由于访问页面需要时间,因此我们需要等待页面加载完成后再进行下一步操作。这里我们使用 time 库来进行 3 秒的延迟:

time.sleep(3)

获取页面内容

items = driver.find_elements_by_css_selector('#pl_top_realtimehot > table > tbody > tr')

以上代码会使用 CSS 选择器来获取页面中的热搜榜信息,我们将所有行的信息都存储在 items 变量中。

遍历获取到的信息并写入 MySQL 数据库

# MySQL 连接信息
db_host = 'localhost'
db_port = 3306
db_user = 'root'
db_password = '123456'
db_dbname = 'test'

# 连接 MySQL 数据库
conn = pymysql.connect(
    host=db_host,
    port=db_port,
    user=db_user,
    password=db_password,
    db=db_dbname,
    charset='utf8mb4'
)

# 获取游标
cursor = conn.cursor()

# 遍历获取到的信息,将数据写入 MySQL 数据库
for item in items:
    # 获取热搜名称及热度信息
    title = item.find_element_by_css_selector('.td-02 > a').text
    count = item.find_element_by_css_selector('.td-02 > span').text

    # SQL 语句
    sql = "INSERT INTO `weibo_hot_search` (`title`, `count`) VALUES ('{0}', '{1}')".format(title, count)

    # 执行 SQL 语句
    cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

以上代码使用了 PyMySQL 库来连接 MySQL 数据库,并通过 SQL 语句将获取到的热搜信息写入到数据库中。

3. 示例说明

示例一

现在我们需要将所有热搜信息存入 MySQL 数据库。

import time
import pymysql
from selenium import webdriver

# MySQL 连接信息
db_host = 'localhost'
db_port = 3306
db_user = 'root'
db_password = '123456'
db_dbname = 'test'

# 连接 MySQL 数据库
conn = pymysql.connect(
    host=db_host,
    port=db_port,
    user=db_user,
    password=db_password,
    db=db_dbname,
    charset='utf8mb4'
)

# 获取游标
cursor = conn.cursor()

# 打开浏览器并访问页面
driver = webdriver.Chrome()
driver.get('https://s.weibo.com/top/summary')

# 等待页面加载完成
time.sleep(3)

# 获取页面内容
items = driver.find_elements_by_css_selector('#pl_top_realtimehot > table > tbody > tr')

# 遍历获取到的信息,将数据写入 MySQL 数据库
for item in items:
    # 获取热搜名称及热度信息
    title = item.find_element_by_css_selector('.td-02 > a').text
    count = item.find_element_by_css_selector('.td-02 > span').text

    # SQL 语句
    sql = "INSERT INTO `weibo_hot_search` (`title`, `count`) VALUES ('{0}', '{1}')".format(title, count)

    # 执行 SQL 语句
    cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

以上示例会将获取到的所有热搜信息存入 MySQL 数据库中。

示例二

现在我们需要只将排名前 5 的热搜信息存入 MySQL 数据库。

import time
import pymysql
from selenium import webdriver

# MySQL 连接信息
db_host = 'localhost'
db_port = 3306
db_user = 'root'
db_password = '123456'
db_dbname = 'test'

# 连接 MySQL 数据库
conn = pymysql.connect(
    host=db_host,
    port=db_port,
    user=db_user,
    password=db_password,
    db=db_dbname,
    charset='utf8mb4'
)

# 获取游标
cursor = conn.cursor()

# 打开浏览器并访问页面
driver = webdriver.Chrome()
driver.get('https://s.weibo.com/top/summary')

# 等待页面加载完成
time.sleep(3)

# 获取页面内容
items = driver.find_elements_by_css_selector('#pl_top_realtimehot > table > tbody > tr')

# 遍历获取到的排名前 5 的信息,将数据写入 MySQL 数据库
for i in range(5):
    # 获取热搜名称及热度信息
    item = items[i]
    title = item.find_element_by_css_selector('.td-02 > a').text
    count = item.find_element_by_css_selector('.td-02 > span').text

    # SQL 语句
    sql = "INSERT INTO `weibo_hot_search` (`title`, `count`) VALUES ('{0}', '{1}')".format(title, count)

    # 执行 SQL 语句
    cursor.execute(sql)

conn.commit()
cursor.close()
conn.close()

以上示例会将获取到的排名前 5 的热搜信息存入 MySQL 数据库中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+selenium爬取微博热搜存入Mysql的实现方法 - Python技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • pandas DataFrame创建方法的方式

    下面是pandas DataFrame创建方法的完整攻略: 创建一个空的DataFrame 可以使用pandas.DataFrame()函数创建空的DataFrame,示例代码如下: import pandas as pd df = pd.DataFrame() print(df) 输出: Empty DataFrameColumns: []Index: […

    python 2023年5月14日
    00
  • 使用Pandas的Series方法绘制图像教程

    下面是使用Pandas的Series方法绘制图像的完整攻略。 第一步:导入Pandas和Matplotlib库 import pandas as pd import matplotlib.pyplot as plt 第二步:创建Series对象 data = pd.Series([1, 3, 5, 7, 9]) 第三步:绘制线形图 data.plot() p…

    python 2023年5月14日
    00
  • Pandas常用的读取和保存数据的函数使用(csv,mysql,json,excel)

    Pandas是Python中非常常用的数据分析和处理库,可以很方便地完成各种操作。其中读取和保存数据的函数使用是比较常用的功能,下面就对Pandas常用的读取和保存数据的函数使用进行详细的讲解。 读取数据 读取csv文件 Pandas中用于读取csv文件的函数是read_csv(),使用方法如下: import pandas as pd data = pd.…

    python 2023年5月14日
    00
  • 如何在Python中把Sklearn数据集转换成Pandas数据框

    将sklearn数据集转换成pandas数据框的过程相对简单,可以按照以下步骤进行: 导入所需的库和数据集 from sklearn import datasets import pandas as pd 在此示例中,我们使用iris数据集。 iris = datasets.load_iris() 创建数据框 将用于创建数据框的数据分离出来,并建立一个列表。…

    python-answer 2023年3月27日
    00
  • Pandas GroupBy中的最大和最小日期

    下面是Pandas GroupBy中最大和最小日期的攻略及实例说明。 1. Pandas GroupBy概述 Pandas是Python提供的常用数据分析库之一,它提供了一个GroupBy对象,通过对数据进行分组,可以方便地对大量数据进行聚合分析。在实际应用中,经常需要分组后求某些属性在各组中的最大或最小值或其他统计量,并将这些统计量整合成表格以便进一步分析…

    python-answer 2023年3月27日
    00
  • 在Pandas中创建空数据框

    在Pandas中创建空数据框是数据分析和处理中的一个非常常见的操作。以下是在Pandas中创建空数据框的完整攻略: 步骤1:导入必要的库 在创建一个空数据框之前,必须要先导入Pandas库,因为它提供了一个名为DataFrame的类,它是Pandas中最重要的数据结构之一。你可以使用以下代码来导入Pandas库: import pandas as pd 步骤…

    python-answer 2023年3月27日
    00
  • pandas参数设置的实用小技巧

    这里是关于“pandas参数设置的实用小技巧”的完整攻略。 1. pandas参数设置介绍 pandas具有数百个参数设置,这些参数能够影响pandas的操作效率和数据处理能力,我们可以通过修改这些参数来提高pandas的性能和准确性。 pandas参数主要分为两种:全局参数和对象参数。全局参数适用于pandas的全局环境,而对象参数只影响特定pandas对…

    python 2023年5月14日
    00
  • 详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法

    我给你详细讲解一下“详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法”。 1.使用pandas.DataFrame.values方法 首先,我们可以使用pandas.DataFrame.values方法将DataFrame转换成Numpy array。该方法返回一个二维数组,其中每一行对应于DataFrame中每一行数据…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部