前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
环境使用:
-
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)
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。