selenium自动化测试豆瓣电影近期热门榜,和保存至Excel
废话少说,直接上代码。
这是成果:
以下是全部代码:
from selenium import webdriver # webdriver 的驱动程序
from selenium.webdriver.common.by import By # 提取数据
from selenium.webdriver import ChromeOptions # chromeOptions 是一个配置 chrome 启动是属性的类。通过这个类,我们可以为chrome配置参数
from selenium.webdriver.support.wait import WebDriverWait # 显示等待
from selenium.webdriver.support import expected_conditions as EC
import time # 导入time
import csv # 导入csv
import os.path # 创建文件夹
import requests # 请求网页数据
import re # 正则匹配 文字匹配driver = webdriver.Chrome()WAIT = WebDriverWait(driver, 10) # 等待def get_serch(url):try:# 发送请求driver.get(url=url)time.sleep(1)WAIT.until(EC.presence_of_element_located((By.LINK_TEXT,'分类'))).click()time.sleep(1)return WAITexcept:print("erro")def get_data(WAIT):all_list = []n = 15 # 设置点击加载更多的次数for page in range(n):WAIT.until(EC.presence_of_element_located((By.LINK_TEXT,'加载更多'))).click()print(f'==============================正在点击第{page}页的数据内容==============================')time.sleep(5)# 找到所有的a标签all_data = WAIT.until(EC.presence_of_all_elements_located((By.XPATH,'//*[@id="app"]/div/div[1]/div[3]/a')))for i in all_data: # 找到所有的a标签循环并点击i.click()# 浏览器切换对象driver.switch_to.window(driver.window_handles[-1])# 提取想要的信息title = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@id="content"]/h1/span[1]'))).textimages = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@class="subject clearfix"]/div[1]/a/img'))).get_attribute('src')ditail = WAIT.until(EC.presence_of_element_located((By.XPATH,'//div[@class="related-info"]/div/span'))).textaoter = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@class="subject clearfix"]/div[2]/span[1]'))).get_attribute('textContent') # 取文本score = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@class="subjectwrap clearfix"]/div[2]/div[1]/div[2]/strong'))).textevaluate = WAIT.until(EC.presence_of_element_located((By.XPATH,'//*[@class="subjectwrap clearfix"]/div[2]/div[1]/div[2]/div/div/a/span'))).get_attribute('textContent')item = {'标题': title,'图片': images,'简介': ditail,'作者': aoter,'评分': score,'评价': evaluate}all_list.append(item)print(item)save_Images(images,title)driver.close()driver.switch_to.window(driver.window_handles[0])return all_listdef save_csv(all_list):# 表头headers = ['标题','图片','简介','作者','评分','评价']# 打开文件with open('豆瓣电影.csv','a+',encoding='utf-8',newline='')as f:f_csv = csv.DictWriter(f,headers)f_csv.writeheader()f_csv.writerows(all_list)def save_Images(images,title):if not os.path.exists('豆瓣图片'): # 创建文件夹os.mkdir('豆瓣图片')images_data = requests.get(url=images).contentbig = '[?<>/\|:"*]' # 剔除特殊字符保存图片li = re.sub(big,"",title)with open('豆瓣图片\\' + li + '.jpg',mode='wb')as f:f.write(images_data)print("保存图片===>",title)def main():url = 'https://movie.douban.com/'WAIT = get_serch(url)all_list = get_data(WAIT)save_csv(all_list)if __name__ == '__main__':main()
selenium自动化测试豆瓣电影近期热门榜,和保存至Excel相关推荐
- 爬虫:获取豆瓣电影爱情片榜单封面图片
电影中单纯而美好的爱情总是让人陷入美好无瑕的幻想. 代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片 爬虫:获取豆瓣电影爱情片榜单封面图片 目的:获取豆瓣电影爱情片榜单封面图片, ...
- 转发 2013豆瓣电影【口碑榜】Top100
2013豆瓣电影[口碑榜]Top100 12月26日周四,豆瓣电影口碑榜公布了2013第52周榜单结果,这也是今年最后一周口碑榜更新.根据这一年的上榜条目,我们整理了口碑榜上最受好评的前100部影片, ...
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- 2020豆瓣电影首页热门电影+热门电视剧 API
豆瓣电影首页API 最近热门电影 最近热门电视剧 API 名称 requestURL baseURL https://movie.douban.com/j/ 名称 requestURL 最近热门电影 ...
- 使用selenium实现豆瓣电影信息的自动化搜索
因为之前写了一段时间的python,但是因为某些其它的事情导致没写博客,所以趁着新任务还是有些时间做,赶紧把之前学习到的.了解到的东西整理一下,也是比较基础的东西,一是怕自己遗忘:二来则是给没用过se ...
- 豆瓣电影:TOP250榜单爬虫
豆瓣电影 Top 250 (douban.com) #导包 import requests from bs4 import BeautifulSoup import pandas as pd 第一步: ...
- python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中
我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...
- selenium自动化测试实战案例哔哩哔哩信息至Excel
文章目录 前言 明确目标 最终效果 开发环境 思路分析 实现步骤 运行效果 以下是全部代码 前言 最近在B站学习知识,于是看完了视频就想着练习一下巩固一下知识,就地取材的做了个B站selenium小项 ...
- Python网络爬虫实战12:爬取豆瓣电影中热门电影数据
代码实例 # coding:utf8 import json import requests from bs4 import BeautifulSoup import openpyxlwb = ope ...
最新文章
- Android JetPack ViewModel 源码解析
- js 时间戳转为日期格式
- onclick函数的导包问题
- 【Python基础】推荐几个神器来拯救奇丑无比的python代码
- 62 | 测一测 | 这些软件测试题目,你都掌握了吗?
- imx226_相机选型器
- 两个音轨合并_两个双音轨mkv视频合并保持原双音轨不变 MKV怎么合并视频,合并之后仍保留MKV的双音轨...
- 做数据中心,腾讯是认真的!
- hive 配置 mysql时的问题(Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D)
- 3.nginx 的基本配置与优化
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
- 【物理应用】基于matlab Q学习无线体域网路由方法【含Matlab源码 264期】
- 黑群晖nas安装保姆级教程
- 通用高拍仪软件_动态展示和教学 良田YL1050AF高拍仪评测
- Idea 破解版下载指南
- seo和网站服务器有什么区别,网站为什么要做seo,seo与sem有什么区别
- java+mysql ssm基于协同过滤算法的演唱会平台
- 部署搭建DNS服务器
- MySQL中date、datetime、timestamp、time、year的区别
- oracle apex global,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧