鱼C论坛

 找回密码
 立即注册
查看: 259|回复: 4

[作品展示] python自动化驱动 爬虫 爬取 某电商网站 某风扇 商品数据

[复制链接]
发表于 2024-6-27 15:28:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小肥狼haoran 于 2024-6-28 11:55 编辑
from selenium import webdriver  # 导入自动化测试模块
from lxml import etree  # 导入etree模块对HTML内容进行解析
import time  # 导入时间模块,强制等待用

browser = webdriver.Chrome()  # 谷歌游览器自动化驱动 实例化

def main():
    browser.get('https://www.suning.com/')  # 实例化需要进入的网站
    browser.maximize_window()  # 游览器最大化,不然无法拿取第一页的总页数
    browser.find_element_by_id('searchKeywords').send_keys('格力风扇')  # 定位搜索框,输入搜索关键词
    browser.find_element_by_id('searchSubmit').click()  # 点击首页搜索按钮
    num = browser.find_element_by_xpath('/html/body/div[8]/div/div[3]/span').text  # 定位第一页的总页数文本
    num = int(num[2:])  # 将字符串转为整数,方便下面循环多少次使用
    for page in range(num):
        scroll()  # 调用滚屏函数
        time.sleep(0.5)
        html = browser.page_source  # 网页源码
        tree = etree.HTML(html)  # 源码给到etree解析
        li_list = tree.xpath('//div[@id="product-list"]/ul/li')  # xpath规则获取列表
        for li in li_list:  # 循环取每条数据
            price = li.xpath(
                './/div[@class="price-box"]/span[@class="def-price"]//text()')  # 价格
            if price == ['\n']:
                price = ['暂无', '价格']
            price = ''.join(price).split()[0]  # 价格
            info = li.xpath('.//div[@class="title-selling-point"]/a/text()')
            info = ''.join(info).split()[0]  # 商品详情
            evaluate = li.xpath('.//div[@class ="evaluate-old clearfix"]//text() ')
            if evaluate == ['\n']:
                evaluate = ['暂无', '评价']
            evaluate = ''.join(evaluate).split()[0]  # 评价
            shop_name = li.xpath('.//div[@class="store-stock"]/a/text()')[0]  # 店名
            label = li.xpath('.//div[@class="sales-label"]//text()')
            if label == []:
                label = ['暂无标签']
            label = ','.join(label)  # 商品标签
            print(price, info, evaluate, shop_name, label)
        try:  # 异常处理,尝试执行以下代码
            print(f'{page + 1}页数据采集完成')  # 告知多少页的数据采集完成
            browser.find_element_by_id('nextPage').click()  # 查询元素id为nextPage好持续翻下一页
        except Exception as e:  # 所有异常处理
            print(f'{page + 1}页是最后一页采集完成')  # 因没有下一页点击了,所以数据爬到最后一页,提示爬完了。


def scroll():  # 滚动屏幕函数
    for page in range(0, 14000, 1000):  # 每次向下滚动1000px,累计滚动14000px
        time.sleep(0.2)  # 代码休眠,强制等待0.2秒
        browser.execute_script(f'window.scroll(0,{page})')  # 从0开始,每次累加1000的数值
        time.sleep(0.4)  # 代码休眠1是网速加载网页内容,2是让测试驱动模仿真人的样子等待。
main()  # 调用函数
browser.quit()  # 关闭游览器
以上代码可以让自动化驱动打开一个谷歌游览器,假装人进行数据爬取。经过今天一天的仔细研究学习,圆满完成。后面还有一段保存在exc表格的步骤就没粘贴进来。分享出来给大家学习一下,这些知识点是我最近在学的爬虫的内容。
微信图片_20240627141131.png
微信图片_20240627144656.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-28 09:06:41 | 显示全部楼层
收藏个,先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-28 11:33:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-6-28 11:56:00 | 显示全部楼层

最后补上了两行代码。调用函数main和关闭游览器,代码结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-28 11:56:20 | 显示全部楼层

共勉,一起学习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表