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

下面是“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日

相关文章

  • 如何在Python Pandas中结合两个数据框架

    在Pandas中结合两个数据框架的操作,通常可以使用merge()函数或者join()函数来进行。下面我将在实例的基础上,详细讲解如何进行这两个函数的操作。 假设我们有两个数据框架df1和df2,它们的数据如下: import pandas as pd df1 = pd.DataFrame({‘key’: [‘foo’, ‘bar’, ‘baz’, ‘foo…

    python-answer 2023年3月27日
    00
  • 计算Pandas数据框架的列数

    计算Pandas数据框架的列数可以通过shape属性来实现。shape属性返回一个元组,元组的第一个值为数据框架的行数,第二个值为数据框架的列数。 具体步骤如下: 导入pandas库并读取数据,生成一个数据框架对象。 import pandas as pd df = pd.read_csv(‘data.csv’) 调用shape属性,并打印结果。 print…

    python-answer 2023年3月27日
    00
  • Pandas数据查询的集中实现方法

    Pandas是Python中用于数据处理和分析的重要工具,其中数据查询是其中的基本功能之一。本文将详细介绍Pandas数据查询的集中实现方法。下面是我们的攻略: 1. Pandas数据查询的基本语法 Pandas中的数据查询可以通过[]符号实现。例如,要对数据Frame中的某一列进行查询,我们可以使用以下语法: data[‘column_name’] 例如,…

    python 2023年5月14日
    00
  • python-pandas创建Series数据类型的操作

    下面是Python Pandas创建Series数据类型的操作的完整攻略。 创建Series 从列表创建 使用pandas.Series构造函数从列表中创建Series对象。 import pandas as pd data = [10, 20, 30, 40] s = pd.Series(data) print(s) 输出: 0 10 1 20 2 30 …

    python 2023年6月13日
    00
  • Python数据分析 Pandas Series对象操作

    下面是关于“Python数据分析 Pandas Series对象操作”的完整攻略。 引言 在进行数据分析时,对于数据的处理和操作是一个重要的环节。而Python作为一种强大的编程语言,其有很多数据分析库,其中Pandas库是常用的一个,它提供了一个叫做Series的数据结构,可以用来存储一维的数据,并提供了很多操作方法。本篇攻略将介绍如何对Pandas Se…

    python 2023年5月14日
    00
  • 如何用Modin来加速Pandas的单行变化

    Modin是一个分布式的Pandas替代工具,可以加速Pandas的操作,并具有相似的API接口。在使用Modin时,我们可以通过设置环境变量来选择使用不同的后端,比如Dask或Ray等。接下来我将详细介绍如何使用Modin来加速Pandas的单行变化操作。 安装Modin和所需的后端 首先,我们需要安装Modin和所需的后端,以用于加速Pandas的操作。…

    python-answer 2023年3月27日
    00
  • pandas.loc 选取指定列进行操作的实例

    下面详细讲解一下如何使用 pandas.loc 选取指定列进行操作的实例,包括两条示例说明。 1. pandas.loc 选取指定列进行操作的基本方法 pandas.loc 方法主要用于对 DataFrame 中的数据进行选取、过滤和操作。我们可以使用 loc 方法对指定列进行操作,具体步骤如下: 步骤 1. 读取数据 首先我们需要读取数据,这里我们以一份 …

    python 2023年6月13日
    00
  • 如何根据列值从数据框架中选择行

    对于从数据框中选择一部分数据这类操作,可通过行索引(row index)和列索引(column index)来实现。在数据框中,行是观测值,列是特征,选择行有助于剖析数据,查看数据中的趋势和模式。 选择行的方法 使用行号(row number):使用DataFrame的iloc方法,通过对行号进行选择。 使用标签(row label):使用DataFrame…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部