当前位置:   article > 正文

python爬虫实例3(使用selenium自动化完成猫眼电影数据爬取)_python使用自动化爬取数据

python使用自动化爬取数据

一.爬虫前的准备工作

首先我们要下载本次爬虫所用到的最重要的python第三方模块——selenium,下面为大家简单介绍一下此模块的用途

1. 什么是selenium

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

2.selenium功能

1、框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
2、使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
3、使用简单,可使用Java,Python等多种语言编写用例脚本。

3 selenium的特点

1、可根据指令操控浏览器
2、只是工具,必须与第三方浏览器结合使用

4.selenium安装与环境配置

pip install selenium==3.0.2     (建议不要更改版本)

注意:需要下载谷歌驱动包与selenium一起使用,驱动包的版本要接近自己电脑谷歌浏览器的版本就行,下载完驱动包之后解压放在python版本号/Scripts文件夹下就行

5、Selenium常用函数

1.浏览器对象

2.定位节点

3 节点对象方法

二.开始爬虫

我们以猫眼top100榜数据的爬取为例(https://www.maoyan.com/board/4)

此次爬取我们还用到了python中的time库以及pandas库,其中time中的sleep方法使爬取数据更加完整,pandas库可以将爬取来的数据封装成DataFrame类型写入文件中,下面进行代码展示

  1. import time
  2. from selenium import webdriver
  3. import pandas as pd
  4. # 爬取一页数据
  5. def get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list):
  6. time.sleep(1) # 给页面加载时间防止爬取不完全
  7. # //div[@id="app"]/div/div/div[1]/dl/dd
  8. dd_list = drive.find_elements_by_xpath('//div[@id="app"]/div/div/div[1]/dl/dd')
  9. # print(dd_list, type(dd_list))
  10. for dd in dd_list:
  11. infos = str(dd.text).split('\n')
  12. print(infos)
  13. rank_list.append(infos[0])
  14. name_list.append(infos[1])
  15. actor_list.append(infos[2])
  16. time_list.append(infos[3])
  17. score_list.append(infos[4])
  18. #
  19. def quit_drive(drive):
  20. time.sleep(5)
  21. drive.quit()
  22. if __name__ == '__main__':
  23. drive = webdriver.Chrome()
  24. drive.get('https://www.maoyan.com/board/4')
  25. time.sleep(5) # 留时间给用户操作,一般指验证,登录之类
  26. # ['1', '我不是药神', '主演:徐峥,周一围,王传君', '上映时间:2018-07-05', '9.6']
  27. rank_list = [] # 序号
  28. name_list = [] # 电影名称
  29. actor_list = [] # 主演
  30. time_list = [] # 上映时间
  31. score_list = [] # 评分
  32. # 爬取第一页数据
  33. page_num = 1
  34. print(f'-------------------------正在爬取第{page_num}页数据------------------------------')
  35. get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list)
  36. while True:
  37. li = drive.find_element_by_xpath('//div[@id="app"]/div/div/div[2]/ul/li[last()]')
  38. if str(li.text) == '下一页':
  39. li.click()
  40. page_num += 1
  41. print(f'-------------------------正在爬取第{page_num}页数据------------------------------')
  42. get_one_data(drive, rank_list, name_list, actor_list, time_list, score_list)
  43. else:
  44. print('爬取完毕')
  45. break
  46. quit_drive(drive)
  47. #将爬取来的数据封装成DataFrame类型写入文件中
  48. dict1 = {
  49. '序号': rank_list,
  50. '电影名称': name_list,
  51. '主演': actor_list,
  52. '上映时间': time_list,
  53. '评分': score_list
  54. }
  55. df1 = pd.DataFrame(dict1)
  56. df1.to_csv('data/猫眼TOP100榜单第一页数据.csv', index=False)

成品展示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/371946
推荐阅读
相关标签
  

闽ICP备14008679号