import random
import time from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By DIRVER_PATH = r'C:\Users\Administrator\Desktop\chromedriver.exe'
# 跳过selenium检测
STEALTH_JS = r'C:\Users\Administrator\Desktop\stealth.min.js' def main():
service = ChromeService(executable_path=DIRVER_PATH) options = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False) # 不退出浏览器
# options.add_experimental_option('detach', True) # 防止检测到selenium
options.add_argument("--disable-blink-features")
options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(service=service, options=options) with open(STEALTH_JS) as f:
js = f.read() driver.execute_cdp_cmd(
cmd="Page.addScriptToEvaluateOnNewDocument",
cmd_args={
"source": js
}
) # 打开一个标签页
# driver.get("https://bot.sannysoft.com/")
driver.get("https://www.maoyan.com/films?showType=3") # 最大化
driver.maximize_window() # 隐式等待最长时间:5秒
driver.implicitly_wait(5) while next_page_ele := driver.find_element(By.LINK_TEXT, "下一页"): elements = driver.find_elements(By.XPATH,'//div[@class="movies-list"]/dl/dd/div[@class="movie-item film-channel"]') for index, element in enumerate(elements, 1):
print("点击电影item元素")
ActionChains(driver).move_to_element(element).click().perform()
print("切换到最后的标签页")
driver.switch_to.window(driver.window_handles[-1]) print("查找评分的元素")
try:
# 评分是字体加密的,这时候就可以利用针对元素进行截图,然后丢给OCR识别
rate_ele = driver.find_element(By.XPATH, "//span[@class='index-left info-num ']/span")
# 丢给OCR识别
except:
print("暂无评分")
else:
print("可以获取到评分元素")
# 关闭标签页
driver.close()
# 回到原来的页面
driver.switch_to.window(driver.window_handles[0])
# 休息一下
time.sleep(random.randint(1, 3)) print("点击下一页")
#ActionChains(driver,).move_to_element(next_page_ele).click().perform()
next_page_ele.click() time.sleep(10)
driver.quit() if __name__ == '__main__':
main()

Selenium-[实例]猫眼电影爬取的更多相关文章

  1. 猫眼电影爬取(三):requests+pyquery,并将数据存储到mysql数据库

    还是以猫眼电影为例,这次用pyquery库进行爬取 1.简单demo,看看如何使用pyquery提取信息,并将提取到的数据进行组合 # coding: utf-8 # author: hmk impo ...

  2. 猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库

    上一篇通过requests+正则爬取了猫眼电影榜单,这次通过requests+beautifulsoup再爬取一次(其实这个网站更适合使用beautifulsoup库爬取) 1.先分析网页源码 可以看 ...

  3. 猫眼电影爬取(一):requests+正则,并将数据存储到mysql数据库

    前面讲了如何通过pymysql操作数据库,这次写一个爬虫来提取信息,并将数据存储到mysql数据库 1.爬取目标 爬取猫眼电影TOP100榜单 要提取的信息包括:电影排名.电影名称.上映时间.分数 2 ...

  4. 使用Selenium&PhantomJS的方式爬取代理

    前面已经爬取了代理,今天我们使用Selenium&PhantomJS的方式爬取快代理 :快代理 - 高速http代理ip每天更新. 首先分析一下快代理,如下 使用谷歌浏览器,检查,发现每个代理 ...

  5. 单线程多任务协程vip电影爬取

    单线程多任务协程vip电影爬取 ​ --仅供学习使用勿作商用如有违规后果自负!!! 这几天一直在使用python爬取电影,主要目的也是为了巩固前段时间强化学习的网络爬虫,也算是一个不错的检验吧,面对众 ...

  6. Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】

    练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...

  7. 使用selenium+phantomJS实现网页爬取

    有些网站反爬虫技术设计的非常好,很难采用WebClient等技术进行网页信息爬取,这时可以考虑采用selenium+phantomJS模拟浏览器(其实是真实的浏览器)的方式进行信息爬取.之前一直使用的 ...

  8. 爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

    1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的 ...

  9. selenium+谷歌无头浏览器爬取网易新闻国内板块

    网页分析 首先来看下要爬取的网站的页面 查看网页源代码:你会发现它是由js动态加载显示的 所以采用selenium+谷歌无头浏览器来爬取它 1 加载网站,并拖动到底,发现其还有个加载更多 2 模拟点击 ...

  10. 前端反爬虫策略--font-face 猫眼数据爬取

      1 .font-face定义了字符集,通过unicode去印射展示. 2 .font-face加载网络字体,我么可以自己创建一套字体,然后自定义一套字符映射关系表例如设置0xefab是映射字符1, ...

随机推荐

  1. 【项目源码】基于Spring + Spring MVC + MyBatis的图书馆管理系统

    基于Spring + Spring MVC + MyBatis的图书馆管理系统.主要功能包括:图书查询.图书管理.图书编辑.读者管理.图书的借阅与归还以及借还日志记录等​,非常适合学习研究. 运行配置 ...

  2. MIMO雷达中波形复用/分离的方法------TDMA\FDMA\DDMA\CDMA

    最先接触到MIMO雷达的波形复用/分离的方法还是工作中负责的TI1843项目中了解的,主要还是时分多址波形(TDMA),当时刚接触时对这些很疑惑,再加上后面看到了频分多址波形(FDMA).码分多址波形 ...

  3. mysql8安装踩坑记

    背景:已安装mysql5.7版本 问题一:默认的3306端口被占用 进入mysql5.7的my.ini文件,更改port为3307或者其他未被占用的端口 问题二:Install/Remove of t ...

  4. oracle clob字段信息读取,不限字符长度

    在项目中,经常需要在plsql中查询clob的内容,提供以下两种方法: 第一种,oracle常规函数,限制文本在4000以内 select dbms_lob.substr(sql_text) from ...

  5. linux文件、目录权限和所有者

    文件.目录权限和所有者 简介:用户对一个文件或目录具有访问权限,这些访问权限决定了谁能访问,以及如何范围这些文件和目录.通过设置权限可以限制或允许以下三种用户访问: 文件的用户所有者(属主) 文件的组 ...

  6. Spring扩展接口(3):BeanFactoryPostProcessor

    在此系列文章中,我总结了Spring几乎所有的扩展接口,以及各个扩展点的使用场景.并整理出一个bean在spring中从被加载到最终初始化的所有可扩展点的顺序调用图.这样,我们也可以看到bean是如何 ...

  7. ELK-WEB中文版化-redis高性能加速

    1.ELK-WEB中文汉化版支持:(kibana所在机器执行)Kibana WEB平台所有的字段均显示为英文,目前5.x版本默认没有中文汉化版插件或者汉化包(7.x版本支持汉化默认有汉化),感谢Git ...

  8. 数据结构与算法(LeetCode) 第二节 链表结构、栈、队列、递归行为、哈希表和有序表

    一.链表结构 1.单向链表节点结构 public class Node{ public int value; public Node next; public Node(int data){ valu ...

  9. js 加密、解密算法类库

    有些功能需要前端进行加密解密,就会用到这些库 crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5.SHA1.SHA2.SHA3 ...

  10. Golang面试题从浅入深高频必刷「2023版」

    大家好,我是阳哥.专注Go语言的学习经验分享和就业辅导. Go语言特点 Go语言相比C++/Java等语言是优雅且简洁的,是我最喜爱的编程语言之一,它既保留了C++的高性能,又可以像Java,Pyth ...