IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium爬虫案例 -> 正文阅读

[开发测试]selenium爬虫案例

用selenium爬取JD商品数据

selenium还是很强大的,不用去管网页源码,只要页面中存在元素,基本都能爬到,通过驱动的方式实现自动打开浏览器,怎么安装驱动可参考上一篇文章:https://blog.csdn.net/little_Muxue/article/details/123694820

(一)网页分析

通过开发者工具不难发现,每个商品数据都是保存在一个div标签中
在这里插入图片描述
紧接着就是去定位每一条数据的位置,比如价格数据,是保存在每一个div标签下的一个 i 标签中,其他的也是对应着相应的标签,就不一一列举了
在这里插入图片描述

(二)需求

把每一个商品的数据爬下来,保存到csv文件中

(三)代码实现

通过面向对象的行式,进行数据的爬取

from selenium import webdriver
import time
import csv

class JD(object):
    def __init__(self):
        self.data = []
        self.head = ['价格', '书名', '出版单位', '评论数']
        self.driver = webdriver.Chrome()			# 谷歌加载驱动
        self.driver.get('https://www.jd.com/')	
        self.driver.implicitly_wait(2)


    def parse_data(self):
        # 输入搜索关键字
        self.driver.find_element_by_id('key').send_keys('大数据')
        # 点击搜索按钮
        self.driver.find_element_by_class_name('button').click()
        time.sleep(1)
        # 下拉滑动条,加载所有数据,document.body.scrollHeight获取当前页面高度
        self.driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        time.sleep(1)

        # 页面元素都加载出来后,开始解析数据,这里我用xpath的搜索方式,其他方式也是可以的
        li_list = self.driver.find_elements_by_xpath('//ul[contains(@class, "gl-warp")]/li')
        for li in li_list:
            item = {}
            # print(li.find_element_by_xpath('.//div[@class="p-price"]/strong').text)
            item['价格'] = li.find_element_by_xpath('.//div[@class="p-price"]/strong').text
            item['书名'] = li.find_element_by_xpath('.//div[@class="p-name"]/a/em').text
            try:
                item['出版单位'] = li.find_element_by_xpath('.//div[@class="p-shopnum"]/a').text
                item['评论数'] = li.find_element_by_xpath('.//div[@class="p-commit"]/strong/a').text
            except:
                item['出版单位'] = ''
                item['评论数'] = ''
            self.data.append(item)
            self.save_data(item)		# 调用保存数据函数

    def save_data(self,lst):
        with open('JD.csv','a',encoding='utf-8',newline='') as f:	# 用追加的方式将数据保存到csv文件中
            DictWriter = csv.DictWriter(f,self.head)	# 写入表头
            DictWriter.writeheader()
            DictWriter.writerow(lst)

	# 函数接口
    def main(self):
        self.parse_data()		# 在 __init__()函数中以及加载了驱动,所有直接调用解析函数
        # self.save_data()

if __name__ == '__main__':
    jd = JD()		# 实例化对象
    jd.main()		# 调用类函数入口

总结

这样功能就基本实现了,但是保存数据的时候有点问题,基础没学好,效果是这样的
在这里插入图片描述
还是得回去加强一下基础

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:40:45  更:2022-04-04 12:40:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:16:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码