使用selenium爬取电视剧排行榜中电视剧的信息并存储到excel中
本人是爬虫初学者,想通过爬取电视剧信息来巩固自己所学的一些知识,但是在一些网站中并没有找到类似于page的参数,或者就是参数加密,自己的能力没法解开,导入无法使用下一页的功能。所以我就想到了selenium,找到"下一页所在的标签",直接点击就好了。慢是慢了点,不过好在能使用下一页的功能了。
发送url请求
网站地址(参数url的值)
# 发送请求
url =""
bro = webdriver.Edge()
bro.get(url=url)
bro.maximize_window() #窗口最大化
我使用的是Edge浏览器驱动
我没有用无头浏览,bro.maximize_window()的作用就是使浏览器窗口最大化。
创建接收文件夹并写好excel的表头
headers=["电影名称","导演","编剧","主演","类型","首播时间"]
if not os.path.exists(r"D:\爬虫数据接收"):os.mkdir(r"D:\爬虫数据接收")
fp = open(r"D:/爬虫数据接收/某瓣电视剧信息爬取.csv","a",encoding="utf-8-sig",newline="")
# 创建writer对象
writer = csv.writer(fp)
# 写表头
writer.writerow(headers)
utf-8-sig 的作用就是防止写入excel文件的时候中文乱码
newline="" 的作用就是防止写入的时候自动换行,导致数据一行隔一行
循环点击电视剧详情页并做xpath解析
while 1:# 获取点击链接hreflist = bro.find_elements(By.XPATH, '//div[@class="doulist-item"]//div[@class="title"]/a')for i in hreflist:i.click()# 切换到新打开的界面bro.switch_to.window(bro.window_handles[-1])time.sleep(2)# 电影名字title_ele = bro.find_element(By.XPATH,'//div[@id="content"]/h1/span[1]')title = title_ele.text# 导演director_ele = bro.find_element(By.XPATH, '//div[@id="content"]//div[@id="info"]/span[1]/span[@class="attrs"]/a')director = director_ele.text# 编剧scriptwriter_ele = bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[2]/span[@class="attrs"]')scriptwriter = scriptwriter_ele.text# 主演actor_ele =bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[3]/span[@class="attrs"]')actor = actor_ele.text# 类型type_ele =bro.find_elements(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[@property="v:genre"]')TV_type = ""for i in type_ele:TV_type = i.text+"/"+TV_type#首播debut_ele = bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[@property="v:initialReleaseDate"]')debut = debut_ele.text# 把数据存放到列表中data = [title,director,scriptwriter,actor,TV_type,debut]# 写内容fp = open(r"D:\爬虫数据接收/电视剧信息爬取.csv", "a", encoding="utf-8-sig",newline="")writer.writerow(data)print("{}爬取完成".format(title))fp.close()time.sleep(2)# 关闭当前窗口bro.close()# 切换到原来的页面bro.switch_to.window(bro.window_handles[-1])time.sleep(1)#切换下一页print("下一页....")next = bro.find_element(By.XPATH,'//span[@class="next"]/a')next.click()
这里可以说明前面为什么要提前写好表头,因为这里写入excel的命令都是在循环中的,如果把写入表头的命令放在这里,就会导致写入很多表头。但是我们的表头只需要一个。(我是纯小白,没有找到好办法只能用笨方法,欢迎大佬指正)
当一个页面循环点击结束之后,找到"下一页"对象,并且点击
#切换下一页print("下一页....")next = bro.find_element(By.XPATH,'//span[@class="next"]/a')next.click()
爬取完成
(本人能力有限,欢迎大佬们修改指正)
附上源码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import csv
import os# 发送请求
url =""
bro = webdriver.Edge()
bro.get(url=url)
bro.maximize_window() #窗口最大化headers=["电影名称","导演","编剧","主演","类型","首播时间"]
if not os.path.exists(r"D:\爬虫数据接收"):os.mkdir(r"D:\爬虫数据接收")
fp = open(r"D:/爬虫数据接收/某瓣电视剧信息爬取.csv","a",encoding="utf-8-sig",newline="")
# 创建writer对象
writer = csv.writer(fp)
# 写表头
writer.writerow(headers)while 1:# 获取点击链接hreflist = bro.find_elements(By.XPATH, '//div[@class="doulist-item"]//div[@class="title"]/a')for i in hreflist:i.click()# 切换到新打开的界面bro.switch_to.window(bro.window_handles[-1])time.sleep(2)# 电影名字title_ele = bro.find_element(By.XPATH,'//div[@id="content"]/h1/span[1]')title = title_ele.text# 导演director_ele = bro.find_element(By.XPATH, '//div[@id="content"]//div[@id="info"]/span[1]/span[@class="attrs"]/a')director = director_ele.text# 编剧scriptwriter_ele = bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[2]/span[@class="attrs"]')scriptwriter = scriptwriter_ele.text# 主演actor_ele =bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[3]/span[@class="attrs"]')actor = actor_ele.text# 类型type_ele =bro.find_elements(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[@property="v:genre"]')TV_type = ""for i in type_ele:TV_type = i.text+"/"+TV_type#首播debut_ele = bro.find_element(By.XPATH,'//div[@id="content"]//div[@id="info"]/span[@property="v:initialReleaseDate"]')debut = debut_ele.text# 把数据存放到列表中data = [title,director,scriptwriter,actor,TV_type,debut]# 写内容fp = open(r"D:\爬虫数据接收/某瓣电视剧信息爬取.csv", "a", encoding="utf-8-sig",newline="")writer.writerow(data)print("{}爬取完成".format(title))fp.close()time.sleep(2)# 关闭当前窗口bro.close()# 切换到原来的页面bro.switch_to.window(bro.window_handles[-1])time.sleep(1)#切换下一页print("下一页....")next = bro.find_element(By.XPATH,'//span[@class="next"]/a')next.click()
使用selenium爬取电视剧排行榜中电视剧的信息并存储到excel中相关推荐
- scrapy+selenium爬取B站生活区热门视频信息!
在爬取动态网页时,一般尽量先找相应网页的API接口.但当接口不好找(或者接口的URL中含有加密参数)时,这时候就需要selenium来帮忙了.但由于selenium爬取速度比较慢,此时结合scrapy ...
- python selenium爬取去哪儿网的酒店信息——详细步骤及代码实现
目录 准备工作 一.webdriver部分 二.定位到新页面 三.提取酒店信息 ??这里要注意?? 四.输出结果 五.全部代码 准备工作 1.pip install selenium 2.配置浏览器驱 ...
- python爬取酒店信息_python selenium爬取去哪儿网的酒店信息(详细步骤及代码实现)...
准备工作 1.pip install selenium 2.配置浏览器驱动.配置其环境变量 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件下载chromed ...
- 使用selenium爬取某东的手机商品信息
程序完整代码 from selenium import webdriver # 自动化爬取工具库 import time # 让程序休眠一段时间的库 from lxml import etree # ...
- 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息
本文对使用到的技术仅做简单的介绍,若想了解更多,请前往相应的官网网站进行学习. 本文适合对爬虫相关知识接触不多的新手,主要是普及Selenium如何做爬虫,大佬请跳过. 1.Selenium简单介绍 ...
- 给大家整理了一篇Python+selenium爬取智联招聘的职位信息
整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...
- 招聘网python职位_Python+selenium爬取智联招聘的职位信息
整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...
- 【附上解释】爬取A股所有上市公司的信息并存储到数据库或者是csv文件中
文章目录 输入到mysql版 输出到csv文件版本 输入到mysql版 输出会有警告,但是不影响. 附上了详细的解释~ import pandas as pd import requests impo ...
- scrapy爬取上海宝山安居客房产信息并存到mysql数据库中
源码下载:https://download.csdn.net/download/dabao87/11997988 首先搭建虚拟环境和安装python这里就不说了,不会的请移步我的其他文章 安装虚拟环境 ...
最新文章
- 在2D数组上进行迭代时,为什么循环顺序会影响性能?
- Replation requires the actual server name ... Replication.Utilies
- 错误日志这样排查,干活更得劲了!!
- 5种Python统计次数的方法
- 第八十五期:一文彻底搞懂cookie和session
- 耿美玉起诉饶毅名誉侵权,法院判了!驳回请求,但对饶毅方也应给予批评
- Portable SharpDevelop(PSD):便携的DotNet集成开发环境
- 如何花式计算20的阶乘?
- Java从入门到精通 第21章 Annotation
- 系统架构设计师:分布式系统(中间件技术)
- win10mysql服务器修改密码,Windows下mysql修改root密码的4种方法
- word里怎么在右上角添加标注[1]
- 29Flutter Sliver家族
- 完美解决“配置Windows Update更新。
- 超屌的多线程锁分类,了解一下?
- miui 8.2 android版本下载,小米日历apk 8.0下载
- phpexcel画出单元格边框
- python form data request_请问Flask的request.form和request.data有什么区别?
- 抖音华仔直播间如何支撑3.5亿人次的直播量
- python 发音-python 发音