赞
踩
首先我们要下载本次爬虫所用到的最重要的python第三方模块——selenium,下面为大家简单介绍一下此模块的用途
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
1、框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
2、使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
3、使用简单,可使用Java,Python等多种语言编写用例脚本。
1、可根据指令操控浏览器
2、只是工具,必须与第三方浏览器结合使用
pip install selenium==3.0.2 (建议不要更改版本)
注意:需要下载谷歌驱动包与selenium一起使用,驱动包的版本要接近自己电脑谷歌浏览器的版本就行,下载完驱动包之后解压放在python版本号/Scripts文件夹下就行
我们以猫眼top100榜数据的爬取为例(https://www.maoyan.com/board/4)
此次爬取我们还用到了python中的time库以及pandas库,其中time中的sleep方法使爬取数据更加完整,pandas库可以将爬取来的数据封装成DataFrame类型写入文件中,下面进行代码展示
-
- import time
- from selenium import webdriver
- import pandas as pd
-
-
- # 爬取一页数据
- def get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list):
- time.sleep(1) # 给页面加载时间防止爬取不完全
- # //div[@id="app"]/div/div/div[1]/dl/dd
- dd_list = drive.find_elements_by_xpath('//div[@id="app"]/div/div/div[1]/dl/dd')
- # print(dd_list, type(dd_list))
- for dd in dd_list:
- infos = str(dd.text).split('\n')
- print(infos)
- rank_list.append(infos[0])
- name_list.append(infos[1])
- actor_list.append(infos[2])
- time_list.append(infos[3])
- score_list.append(infos[4])
- #
-
-
- def quit_drive(drive):
- time.sleep(5)
- drive.quit()
-
-
- if __name__ == '__main__':
- drive = webdriver.Chrome()
- drive.get('https://www.maoyan.com/board/4')
- time.sleep(5) # 留时间给用户操作,一般指验证,登录之类
-
- # ['1', '我不是药神', '主演:徐峥,周一围,王传君', '上映时间:2018-07-05', '9.6']
- rank_list = [] # 序号
- name_list = [] # 电影名称
- actor_list = [] # 主演
- time_list = [] # 上映时间
- score_list = [] # 评分
- # 爬取第一页数据
- page_num = 1
- print(f'-------------------------正在爬取第{page_num}页数据------------------------------')
- get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list)
-
- while True:
- li = drive.find_element_by_xpath('//div[@id="app"]/div/div/div[2]/ul/li[last()]')
- if str(li.text) == '下一页':
- li.click()
- page_num += 1
- print(f'-------------------------正在爬取第{page_num}页数据------------------------------')
- get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list)
-
-
- else:
- print('爬取完毕')
- break
-
- quit_drive(drive)
-
-
- #将爬取来的数据封装成DataFrame类型写入文件中
- dict1 = {
- '序号': rank_list,
- '电影名称': name_list,
- '主演': actor_list,
- '上映时间': time_list,
- '评分': score_list
- }
- df1 = pd.DataFrame(dict1)
- df1.to_csv('data/猫眼TOP100榜单第一页数据.csv', index=False)
-
-
成品展示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。