Python爬虫学习笔记 (14) [中级] 动态网页处理利器 selenium + 豆瓣网电影清单 (监控下拉&点击状态)
2021/4/10 1:25:08
本文主要是介绍Python爬虫学习笔记 (14) [中级] 动态网页处理利器 selenium + 豆瓣网电影清单 (监控下拉&点击状态),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
更新日期: 2021.04.09
本节学习内容 :
上一节练习了获取当当网图书清单,页面上没有判停的标志,使用 selenium不断的下拉滚动条继续加载,拉了 97次,终于到底了~
本节操练下使用 selenium 的另一种场景,即页面下方有个按键,比如 “点击下载更多”,不断的下拉滚动条,然后点击这个按键,直到这个按键不再出现了(拉到底了),或者,已经拉到了我预定的次数(获得了足够的信息),不需要继续加载了。
目录
- 1. 采集豆瓣网电影清单
- 2. 关于 selenium 的使用
1. 采集豆瓣网电影清单
代码和 print 语句有点唠叨,嘻嘻~~
运行完毕,得到以下输出,查了下 txt 文件,一共有700部电影~~:
- 好像还有电影在下面,算了,已经拉了50次了,就这样吧~~
- 豆瓣网2020年电影清单网页代码已经保存在 ‘douban_movie_list_2020.txt’ 文件中,收工~
from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.common.exceptions import NoSuchElementException from selenium.common import exceptions import time import random # 初始化 driver my_options = ChromeOptions() my_options.add_experimental_option('excludeSwitches', ['enable-automation']) my_options.add_argument('--disable-gpu') # 规避 bug no_image = {"profile.managed_default_content_settings.images": 2} my_options.add_experimental_option("prefs", no_image) driver = webdriver.Chrome(options=my_options) # 打开网页(豆瓣网2020年电影清单) url = 'https://movie.douban.com/tag/#/?sort=U&range=0,10&tags=%E7%94%B5%E5%BD%B1,2020' driver.get(url) # 立即运行以下Javascript命令, 避免webdriver被网页上的JS代码检测为爬虫 driver.execute_script('Object.defineProperty(navigator,"webdriver",{get:() => false})') time.sleep(random.uniform(1.2, 1.5)) # driver.execute_script('window.open("https://www.baidu.com")') # 也可以使用JS命令打开网页 # 最大化窗口,随机休眠 driver.maximize_window() time.sleep(random.uniform(1.2, 1.5)) # 判停标准:页面拉到底了;或者已经下拉+点击50次,够啦 reach_bottom = False click_times = 0 while (not reach_bottom) and (click_times < 50): driver.execute_script("window.scrollTo(0, document.body.scrollHeight)") time.sleep(random.uniform(1.5, 2.1)) try: driver.find_element_by_class_name('more').click() time.sleep(random.uniform(1.3, 1.6)) click_times = click_times + 1 if click_times == 50: print("好像还有电影在下面,算了,已经拉了50次了,就这样吧~~") except NoSuchElementException: print("Exception: " + str(NoSuchElementException)) print("一共拉了 " + str(click_times) + " 次,没啦~~") reach_bottom = True except exceptions: print("Exception: " + str(exceptions)) print("好像出了什么错误,我也不知道是什么...再拉拉试试吧...") with open('douban_movie_list_2020.txt', 'a', encoding ="utf-8") as file: file.write(driver.page_source) print("豆瓣网2020年电影清单网页代码已经保存在 'douban_movie_list_2020.txt' 文件中,收工~") driver.quit()
2. 关于 selenium 的使用
- 由于速度问题,只要可以使用 requests 库,就不考虑使用 selenium 。
- 发现适合 selenium 的应用场景主要就是下拉滚动条和点击按键,分别在这两节种尝试了下。
- selenium 的学习暂时告一段落,今后发现了新的应用场景,再回来加上~
- 使用 selenium 的其他要点和 requests 一样,比如使用代理,cookies,设置 headers 等等,不再复述。
这篇关于Python爬虫学习笔记 (14) [中级] 动态网页处理利器 selenium + 豆瓣网电影清单 (监控下拉&点击状态)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门