栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

利用selenium爬取艺恩年度票房

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用selenium爬取艺恩年度票房

利用selenium爬取艺恩年度票房

1.概述

1.1 selenium 2.爬取原理3.前期准备

3.1webdrive:类似于驱动(原理如下图)提醒:webdriver必须与浏览器版本相一致!3.2 selenium库3.3 mysql数据库安装3.4 mysql与python连接库(类似于webdrive)3.5 re(正则表达式)库 4.代码实例5.效果图6 说明

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号