本人是爬虫初学者,想通过爬取电视剧信息来巩固自己所学的一些知识,但是在一些网站中并没有找到类似于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中相关推荐

  1. scrapy+selenium爬取B站生活区热门视频信息!

    在爬取动态网页时,一般尽量先找相应网页的API接口.但当接口不好找(或者接口的URL中含有加密参数)时,这时候就需要selenium来帮忙了.但由于selenium爬取速度比较慢,此时结合scrapy ...

  2. python selenium爬取去哪儿网的酒店信息——详细步骤及代码实现

    目录 准备工作 一.webdriver部分 二.定位到新页面 三.提取酒店信息 ??这里要注意?? 四.输出结果 五.全部代码 准备工作 1.pip install selenium 2.配置浏览器驱 ...

  3. python爬取酒店信息_python selenium爬取去哪儿网的酒店信息(详细步骤及代码实现)...

    准备工作 1.pip install selenium 2.配置浏览器驱动.配置其环境变量 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件下载chromed ...

  4. 使用selenium爬取某东的手机商品信息

    程序完整代码 from selenium import webdriver # 自动化爬取工具库 import time # 让程序休眠一段时间的库 from lxml import etree # ...

  5. 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息

    本文对使用到的技术仅做简单的介绍,若想了解更多,请前往相应的官网网站进行学习. 本文适合对爬虫相关知识接触不多的新手,主要是普及Selenium如何做爬虫,大佬请跳过. 1.Selenium简单介绍 ...

  6. 给大家整理了一篇Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...

  7. 招聘网python职位_Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 1 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的 ...

  8. 【附上解释】爬取A股所有上市公司的信息并存储到数据库或者是csv文件中

    文章目录 输入到mysql版 输出到csv文件版本 输入到mysql版 输出会有警告,但是不影响. 附上了详细的解释~ import pandas as pd import requests impo ...

  9. scrapy爬取上海宝山安居客房产信息并存到mysql数据库中

    源码下载:https://download.csdn.net/download/dabao87/11997988 首先搭建虚拟环境和安装python这里就不说了,不会的请移步我的其他文章 安装虚拟环境 ...

最新文章

  1. 在2D数组上进行迭代时,为什么循环顺序会影响性能?
  2. Replation requires the actual server name ... Replication.Utilies
  3. 错误日志这样排查,干活更得劲了!!
  4. 5种Python统计次数的方法
  5. 第八十五期:一文彻底搞懂cookie和session
  6. 耿美玉起诉饶毅名誉侵权,法院判了!驳回请求,但对饶毅方也应给予批评
  7. Portable SharpDevelop(PSD):便携的DotNet集成开发环境
  8. 如何花式计算20的阶乘?
  9. Java从入门到精通 第21章 Annotation
  10. 系统架构设计师:分布式系统(中间件技术)
  11. win10mysql服务器修改密码,Windows下mysql修改root密码的4种方法
  12. word里怎么在右上角添加标注[1]
  13. 29Flutter Sliver家族
  14. 完美解决“配置Windows Update更新。
  15. 超屌的多线程锁分类,了解一下?
  16. miui 8.2 android版本下载,小米日历apk 8.0下载
  17. phpexcel画出单元格边框
  18. python form data request_请问Flask的request.form和request.data有什么区别?
  19. 抖音华仔直播间如何支撑3.5亿人次的直播量
  20. python 发音-python 发音

热门文章

  1. phantomjs入门使用
  2. 指针与数组——你真的懂么?
  3. RFC3581——SIP中的rport机制
  4. caffe训练过程可视化-将两个loss曲线一个accuracy曲线画在一个图上
  5. ionic开发笔记三:ionic开发时候需要用到的网址
  6. Pushmall共享电商营销推广平台2023年6月升级进度
  7. 关于RAM与ROM的区别与理解
  8. VueVue-cli
  9. 信创操作系统--统信UOS桌面版(控制中心:账户、自定义、个性化、声音、日期、电源管理、网络、蓝牙、输入法、系统更新等设置)
  10. 非计算机专业教学改革,非计算机专业计算机课程的教学改革.pdf