前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:
-  python 3.8 >>>>>> 运行代码 
-  pycharm 2022.3 >>>>>> 辅助敲代码 
模块使用:
-  selenium >>> pip install selenium==3.141.0 指定版本安装 <模拟人的行为去操作浏览器 自动化操作浏览器> 
-  谷歌浏览器 
-  谷歌驱动 和浏览器版本相对应 
-  csv 文件格式 
安装方法:
win + R 输入cmd 输入安装命令 pip install 模块名
(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可
selenium --> 自动化测试模块
模拟人的行为去操作浏览器
正常访问网站:
-  打开浏览器 
-  访问网站 
-  输入商品名字 
-  自动登陆账号密码 
-  浏览商品数据 --> 获取商品数据 
代码展示
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from cfg import account, password
# 导入csv文件
import csv
# 创建文件
f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '价格',
    '销量',
    '城市',
    '店名',
    '详情页',
])
csv_writer.writeheader()
# 1. 打开浏览器
driver = webdriver.Chrome()
# 绕过selenium检测
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                       {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
# 2. 访问淘宝网站
driver.get('https://*****/')
"""
3. 输入商品名字 --> 人: 肉眼观察 找到输入框, 输入内容, 回车
    代码: 通过网页元素定位输入框
    元素定位: css选择器 / xpath节点
"""
# 通过 CSS 选择器查找元素
driver.find_element_by_css_selector('#q').send_keys('粽子')
driver.find_element_by_css_selector('#q').send_keys(Keys.ENTER)
"""
4. 自动登陆账号密码
    输入账号密码之后, 点击登陆, 出现验证码, 手动过验证码,验证失败 <被检测到你在使用selenium>
"""
# 输入账号
driver.find_element_by_css_selector('#fm-login-id').send_keys(account)
# 输入密码
driver.find_element_by_css_selector('#fm-login-password').send_keys(password)
# 点击登陆按钮
driver.find_element_by_css_selector('.password-login').click()
"""
5. 获取商品数据
    没有报错bug, 怎么解决?
        - 没取到值
            selenium通过元素定位
            1. 解析语法有问题 <>
            2. 元素是否加载 <√>
"""
# 设置延时, 让数据加载完成之后,再解析数据
driver.implicitly_wait(10)
# 获取所有div标签内容 --> 返回列表
divs = driver.find_elements_by_css_selector('.Content--contentInner--QVTcU0M .Card--doubleCardWrapper--L2XFE73')
if len(divs) > 1:
    for div in divs:
        title = div.find_element_by_css_selector('.Title--title--jCOPvpf span').text
        Price = div.find_element_by_css_selector('.Price--priceInt--ZlsSi_M').text
        # div.find_element_by_class_name('Price--priceInt--ZlsSi_M')
        # . 定位class类
        sales = div.find_element_by_css_selector('.Price--realSales--FhTZc7U').text
        ShopInfo = div.find_element_by_css_selector('.ShopInfo--shopName--rg6mGmy').text
        """
        1. css定位元素 <√>
        2. 列表推导式 
        3. join 列表合并成字符串
        """
        city = ''.join([i.text for i in div.find_elements_by_css_selector('.Price--procity--_7Vt3mX')])
        href = div.get_attribute('href')
        # 创建一个字典
        dit = {
            '标题': title,
            '价格': Price,
            '销量': sales,
            '城市': city,
            '店名': ShopInfo,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, Price, sales, city, ShopInfo, href)
else:
    divs = driver.find_elements_by_css_selector('.grid .items .item')
    for div in divs:
        title = div.find_element_by_css_selector('.title a').text
        Price = div.find_element_by_css_selector('.price strong').text
        # div.find_element_by_class_name('Price--priceInt--ZlsSi_M')
        # . 定位class类
        sales = div.find_element_by_css_selector('.deal-cnt').text
        ShopInfo = div.find_elements_by_css_selector('.shopname span')[-1].text
        """
        1. css定位元素 <√>
        2. 列表推导式 
        3. join 列表合并成字符串
        """
        city = div.find_element_by_css_selector('.location').text
        href = div.find_element_by_css_selector('.title a').get_attribute('href')
        dit = {
            '标题': title,
            '价格': Price,
            '销量': sales,
            '城市': city,
            '店名': ShopInfo,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, Price, sales, city, ShopInfo, href)
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。




















