Python使用selenium自动化测试爬取苏宁冰箱价格及型号并保存在csv中

news/2024/11/29 10:49:46/

苏宁易购上对于冰箱的价格信息,是被Js渲染过的,无法通过request、bs4库或者是scrapy直接爬取下来的,所以今天学习并使用了selenium库,并将所有冰箱的价格及型号全部保存在csv中。

  • 使用selenium库之前,需要在网站上下载Chromedeiver,而且必须下载配套自己谷歌浏览器版本的,网站是:http://npm.taobao.org/mirrors/chromedriver
  • 配套上time库,因为js渲染加载需要一定的时间,如果没有充足的时间把物品信息加载出来的话,会导致爬取不全,爬到非常少的相关冰箱信息。time.sleep()参数是秒。
  • 在第一面刚刚打开网站的时候,会有一个大广告,所以selenium库正好可以操作一个botton按钮,click进行关闭,自动化库的使用过程就是模拟一个人的使用,如果不关闭广告的话我们也是无法就像是用这个网站的。
  • 模拟网站下拉操作,下拉可以使后续的网页信息加载Js,越往下拉数据越多,本人在下拉的整个过程中使网页停止了20秒,给网页充足的时间显示信息。
  • 对价格、型号的xpath进行解析,对于获取所有信息。
  • 显示并保存到csv中,不知道为什么在爬取所有的信息的时候,会出现空行,应该是有这样的xpath标签但是其中没有任何数据,也是为了更好的保存到csv中,我们把每个对应的值保存在一个字符串中,对字符串进行判断,如果不为空显示且保存。(最后保证数据的可视化)
  • 对于1-40的网页我们使用按钮点击,click每个网页的下方右键按钮,每次点击都会调转到下一页上,苏宁的冰箱对于网页的操作作死没有数字,用的是second。。。所以只能够用selenium模拟点击。所有操作循环来进行。
  • 保存在csv表格一定要注意设置encoding,否则乱码。因为下一页算是追加信息,文件读取类型里,我们使用a来做文件的标注。追加不留空行,要加入newline。

这就是所有用爬虫爬取到的代码信息,以后可以套模板了:

import selenium
from selenium import  webdriver
import time
import csv
import codecscsvFile=open('C:\\Users\\JYuXuAN\\Desktop\\sn.csv','a',encoding='utf-8-sig', newline="")
writer=csv.writer(csvFile)
writer.writerow(['价格','冰箱信息'])driver = webdriver.Chrome(executable_path='C:\\Users\\JYuXuAN\\AppData\\Local\\CentBrowser\\Application\\chromedriver.exe')
driver.get('https://search.suning.com/%E5%86%B0%E7%AE%B1/')botton=driver.find_element_by_class_name('close-btn')
time.sleep(2)
botton.click()num=1
while(num!=40):driver.execute_script("""(function () {var y = 0;var step = 100;window.scroll(0, 0);function f() {if (y < document.body.scrollHeight) {y += step;window.scroll(0, y);setTimeout(f, 100);} else {window.scroll(0, 0);document.title += "scroll-done";}}setTimeout(f, 1000);})();""")time.sleep(20)price=driver.find_elements_by_xpath('//span[@class="def-price"]')info=driver.find_elements_by_xpath('//div[@class="title-selling-point"]/a[1]')for p,i in zip(price,info):s1=""+str(p.text)s2=""+str(i.text)if(s1!=''):print("价格为:"+s1,end="   ")print("物品信息:"+s2)writer.writerow([s1,s2])botton2=driver.find_element_by_class_name('next')time.sleep(1)botton2.click()num=num+1

http://www.ppmy.cn/news/179791.html

相关文章

<Linux>《Linux 扩容 LVM操作大全》

[TOC](《Linux 扩容 LVM》 1 谨记2 创建目录2.1 fdisk -l 查看磁盘情况2.2 df -T 查看文件系统类型2.3 fdisk /dev/sba 操作2.3.1 修改设备&#xff0c;并查看帮助2.3.2 创建分区2.3.3 格式化创建的分区 2.4 创建pv物理卷2.5 创建vg2.6 创建lv2.7 当前文件系统的类型2.8 格式化…

设计模式--创建模式--Factory

Mark&#xff5e; Factory有2个模式一个是Factory Method和Abstract Factory这个模式基本相同只是在复杂度上的不同&#xff5e; Factory Method适用比较简单的&#xff0c;比如一个公司(如DELL)有电脑业务&#xff1a;卖台式机、笔记本、上网本。这个时候我们就是FM。 由于…

职场近一年,工作总结

下一站&#xff0c;老城区 Jun 8.2011 前段时间&#xff0c;老板电话里头的那番话&#xff0c;现在仍犹在耳边&#xff0c;似乎是一种微微的召唤&#xff01;技术人&#xff0c;总是向往着更好的工作氛围与技术挑战&#xff01;老板的一番话&#xff0c;那一句“近来业务较多&a…

【软件测试】软件测试管理

软件测试管理 软件测试环境测试环境的要素测试环境管理员 软件测试计划⭐测试计划目标测试计划主题测试计划制订过程定义工作进度的过程测试策略 软件缺陷(bug)管理缺陷的主要属性如何报告缺陷⭐如何跟踪缺陷缺陷度量 软件配置管理&#xff08;SCM&#xff09;软件配置管理的基…

RDS服务详细讲解(IT枫斗者)

RDS服务详细讲解 部署RDS 服务 主要可以为公司节约计算机的硬件成本在RDS 服务器上集中部署应用程序&#xff0c;以虚拟化的方式为用户提供访问&#xff0c;而用户端不需要安装任何应用程序RDS 采用 c/s 模式 RDS 的终端&#xff0c; 连接RDS 服务器的用户端设备 从键盘或者…

Moto Razr3什么时候发布 Moto Razr3配置如何

Moto Razr3作为摩托罗拉即将推出的新款折叠机&#xff0c;在最近曝光的外观上十分吸引人&#xff0c;但关于这部手机什么时候发布是很多人想知道的&#xff0c;那么&#xff0c;Moto Razr3什么时候发布 Moto Razr3配置如何。 Moto Razr3什么时候发布 今日&#xff0c;数码博主…

Moto 360拆机

Moto 360拆机 森仔讨厌西红柿 发表 2014-9-9 23:30查看: 684| 暂无评论 |原作者: 森仔讨厌西红柿 又到了大家最爱的拆机环节&#xff0c;ifixit这个大名鼎鼎的拆机网站这次给我带来的也是一款大名鼎鼎的穿戴式设备Moto 360&#xff0c;那么我们来看看Moto 360的详细拆解过程&…

MOTO安卓刷小米系统教程

下载刷机工具和ROM包 下载必要的文件&#xff0c;为刷机过程做准备。 1.本教程需要在Windows操作系统环境下进行。 2.本教程只针对MOTO Milestone, 国行版XT720未经过测试&#xff0c;不推荐刷机。 3.刷机有风险&#xff0c;务必要小心&#xff1b;因刷机造成的任何问题&#…