用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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值