利用selenium爬取艺恩年度票房

本文介绍了如何利用Selenium库配合WebDriver工具爬取艺恩网站上的年度票房数据,并将其存储到MySQL数据库中。首先,需要确保WebDriver与浏览器版本匹配,然后安装Selenium库和pymysql来连接数据库。接着,使用正则表达式处理爬取的数据,并通过循环将数据插入数据库。最后,文章展示了部分代码实例和预期效果。
摘要由CSDN通过智能技术生成

1.概述

1.1 selenium

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。(摘自百度百科)

2.爬取原理

利用selenium爬取网站中的数据,并将其保存到mysql数据库中

3.前期准备

3.1webdrive:类似于驱动(原理如下图)

Webdriver是针对不同的浏览器开发的,不同的浏览器有不同的webdriver。例如针对Chrome使用的chromedriver。在这里插入图片描述

提醒:webdriver必须与浏览器版本相一致!

3.2 selenium库

安装selenium库:
请添加图片描述

3.3 mysql数据库安装

详情安装 mysql安装教程

3.4 mysql与python连接库(类似于webdrive)

连接库有很多,详情请见下面链接
连接库
本案例采用 pymysql:
在这里插入图片描述

3.5 re(正则表达式)库

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
在这里插入图片描述

4.代码实例

import re
import pymysql
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
db = pymysql.connect(host='127.0.0.1', port=3306,user = 'root',password='123456',database='dianying',charset='utf8') #数据库名字、密码为自己定义
driver = webdriver.Chrome()
driver.get('https://www.endata.com.cn/BoxOffice/BO/Year/index.html')
sel_el = driver.find_element_by_xpath('//*[@id="OptionDate"]')
sel = Select(sel_el)
for i in range(len(sel.options)):
    sel.select_by_index(i)
    time.sleep(2)
    table2 = driver.find_element_by_xpath('/html/body/section[1]/div/div[2]/div/div/div[2]/table/tbody')
    ss = table2.text
    ss1 = re.split(r'[\n ]',ss)
    for j in range(25):
        cursor = db.cursor()  
        demo = cursor.execute('INSERT INTO data VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)',(str(2021-i),ss1[j*8+0],ss1[j*8+1],ss1[j*8+2],ss1[j*8+3],ss1[j*8+4],ss1[j*8+5],ss1[j*8+6],ss1[j*8+7]))

        lists = cursor.fetchall()
        db.commit()
    print("==================================")
db.close()
driver.close()

5.效果图

在这里插入图片描述

6 说明

如有侵权,联系删除 csl184548@163.com

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值