用Python实现爬取淘宝的数据并且存入Excel

部署运行你感兴趣的模型镜像

1、成果展示

开始运行后,程序自己打开浏览器

根据用户代码中的账号密码模拟登录

提示输入搜索内容

输入内容以及页数

回车后浏览器自动跳转爬取内容

提示爬取成功

在改文件目录下存放为Excel文件形式

2、完整代码

import time
from selenium import webdriver
from bs4 import BeautifulSoup

from selenium.webdriver.common.by import By
from openpyxl import Workbook

def taobao():
    # 创建 EdgeOptions 对象
    option = webdriver.EdgeOptions()
    # 添加排除选项,避免被识别为自动化程序
    option.add_experimental_option('excludeSwitches', ['enable-automation'])

    # 创建 edge WebDriver
    driver = webdriver.Edge(options=option)

    # 执行 JavaScript 代码,修改 navigator.webdriver 属性,防止浏览器被识别为自动化程序
    driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
        'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
    })
    # 打开淘宝登录页面
    driver.get("https://login.taobao.com/member/login.jhtml")

    # fm-login-id
    # 等待3秒,确保页面加载完成
    time.sleep(1)
    driver.find_element(By.ID, 'fm-login-id').click()
    time.sleep(1)
    driver.find_element(By.ID, 'fm-login-id').send_keys('150*********')#更改为你的淘宝登录账号
    time.sleep(1)
    driver.find_element(By.ID, 'fm-login-password').click()
    time.sleep(1)
    driver.find_element(By.ID, 'fm-login-password').send_keys('***************')#更改为你的淘宝登录密码
    time.sleep(1)
    # 点击登录按钮
    login_button = driver.find_element(By.CLASS_NAME, 'login-form > div.fm-btn > button')
    # login-form > div.fm-btn > button
    login_button.click()

    # 等待5秒,确保登录成功
    time.sleep(8)
    # login-form > div.fm-btn > button
    # fm-login-password
    # 搜索商品并获取页面内容
    things = input("输入要找的东西:")
    page = int(input("页数:"))

    wb = Workbook()
    # 创作工作表
    ws = wb.active
    # 设置单元格列宽
    ws.column_dimensions['A'].width = 108  # 设置第一列(列 A)的宽度为 108
    # 添加表头
    ws.append(["商品", "单价", "店铺"])
    for p in range(page):
        url = f"https://s.taobao.com/search?page={p + 1}&q={things}"
        #https://s.taobao.com/search?page=1&q=%E8%A1%A3%E6%9C%8D&tab=all
        driver.get(url)
        time.sleep(5)  # 等待页面加载完成
        soup = BeautifulSoup(driver.page_source, 'html.parser').find_all(attrs={"class": "Card--doubleCardWrapper--L2XFE73"})
        # print(soup)
        last_list = []
        for np in soup:
            excel_list = []
            name = np.find(attrs={"class": "Title--title--jCOPvpf"}).get_text()
            # print(name)
            excel_list.append(name)
            price = "¥" + np.find(attrs={"class": "Price--priceInt--ZlsSi_M"}).get_text()
            excel_list.append(price)
            shop = np.find(attrs={"class": "ShopInfo--shopName--rg6mGmy"}).get_text()
            excel_list.append(shop)
            last_list.append(excel_list)
        for i in last_list:
            ws.append(i)
    wb.save("淘宝.xlsx")
    print("已完成")
    # 关闭浏览器
    driver.quit()
taobao()

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值