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日

相关文章

  • springboot整合单机缓存ehcache的实现

    下面是关于“springboot整合单机缓存ehcache的实现”的完整攻略。 1、什么是Ehcache Ehcache是一个开源的、基于Java的、容易使用的缓存管理系统。它可以用于加速应用程序的性能和管理大量数据。 Ehcache提供了多种缓存的策略,包括最近最少使用(LRU)、最少使用(LFU)、FIFO等。Ehcache旨在为Java应用程序提供高速…

    python 2023年5月14日
    00
  • Pandas:Series和DataFrame删除指定轴上数据的方法

    Pandas是python中一款非常常用的数据处理库,其可以方便的对数据进行处理、统计和分析。而在数据处理中,删除数据是一个非常常见的操作。在这里,我们讲述如何在Pandas中删除Series和DataFrame中指定轴上的数据。 删除Series中指定位置的元素 要删除Series中指定位置的元素,需要使用Series的drop()方法。 Series.d…

    python 2023年6月13日
    00
  • Python基础之教你怎么在M1系统上使用pandas

    Python是一门功能强大、易于学习的编程语言,经常被用于数据分析、数据处理以及科学计算等领域。其中,pandas是Python数据分析的重要工具之一,它能够高效地处理包含结构化数据的大型数据集。 随着Apple M1芯片的问世,越来越多的用户选择了使用Mac电脑,并且也会遇到在M1系统上使用pandas的问题。在本文中,我将为您提供一份详细的教程,帮助您在…

    python 2023年5月14日
    00
  • pandas时间序列之如何将int转换成datetime格式

    当我们使用pandas对时间序列数据进行分析时,常常需要将整型数据表示的时间转化为datetime格式,以实现更精确的数据分析。 这里提供一种将int转换为datetime的方法: 首先需要引入pandas库和datetime库: import pandas as pd from datetime import datetime 其次,我们需要定义一个转换函…

    python 2023年5月14日
    00
  • 使用Django框架在表格视图中把数据框架渲染成html模板

    首先,我们需要在Django中创建一个表格视图,以展示所需的数据。比如,我们需要展示一个学生列表,我们可以在views.py文件中编写如下代码: from django.shortcuts import render from .models import Student # 假设我们有一个学生模型 def student_list(request): st…

    python-answer 2023年3月27日
    00
  • Pandas DataFrame操作数据增删查改

    现在我来为你详细讲解“Pandas DataFrame操作数据增删查改”的完整攻略。 1. Pandas DataFrame操作数据增加 Pandas DataFrame操作数据的基本方法是使用.loc或.iloc方法。其中.loc方法可以使用标签(label)来定位,.iloc方法可以使用位置(position)来定位。下面是两个示例。 1.1 使用.lo…

    python 2023年5月14日
    00
  • 在Pandas中根据行频对数据框进行排序

    在Pandas中,可以根据某一列或多列的值对数据框进行排序。不过有时候我们需要根据行频(行出现的次数)对数据框进行排序。这篇文章将详细介绍这个过程,并提供实例说明。 1. 读取数据 首先,我们需要读取一些数据,以便后面的操作。这里我们可以使用Pandas自带的dataframe,如下所示: import pandas as pd from collectio…

    python-answer 2023年3月27日
    00
  • 使用pandas忽略行列索引,纵向拼接多个dataframe

    使用pandas拼接多个dataframe是数据分析中常用的操作,可以将多个数据表合并成一个大表进行分析。 在拼接多个dataframe时,经常需要忽略原有的行列索引,重新构建新的索引。同时,在纵向拼接时,需要注意列名的一致性,以及缺失值的处理。 下面是使用pandas忽略行列索引,纵向拼接多个dataframe的步骤: 1.加载pandas库 import…

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