当前位置: 首页 > web >正文

python+selenium实现淘宝商品数据半自动查询

背景

selenium库是一种模拟用户打开浏览器行为从而获取到所需的数据,相比于传统的通过接口爬取数据,这种爬虫方式更能突破反爬。因为很多商城类网站查数据的接口都会有签名,只有通过商城网站的前端才能生成签名,而selenium模拟用户打开浏览器就完美地解决了该问题。

业务流程

  1. 首先是调库方法打开浏览器并访问某个网站。
  2. F12查看标签,找到搜索框,搜索按钮以及所要获取的数据所在的标签。
  3. (设置等待,等待页面加载)
  4. 通过代码选中搜索框标签
  5. 给搜索框标签填充值
  6. 获取搜索按钮标签并调用鼠标库调用鼠标左键点击搜索
  7. (设置等待,等待页面加载)
  8. 调用分析HTML的方法解析前端代码
  9. 获取所需数据的标签并调用方法获取其中的值
  10. 将值存储到excel中

详细实现分析

主要使用的类库

selenium,ActionChains(鼠标操作),webdriver(浏览器),keys(键盘按键)

from time import sleep
import openpyxl
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
from openpyxl import load_workbook# 查询淘宝
def queryTaoBao(productName):# 声明浏览器驱动browser = webdriver.Chrome()taobao = browser.get("http://www.taobao.com")# 等待搜索框加载完成并获取该元素input_element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))# 等待搜索按钮可点击并获取该元素(定位id为J_TSearchForm的元素的class为search-button的div子元素的button子标签)search_button = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#J_TSearchForm > div.search-button > button")))# 输入要搜索的关键字input_element.send_keys(productName)# 点击搜索按钮search_button.click()#因为要登陆,所以睡15秒,期间可以手动操作登录sleep(15)# 获取加载完成的网页代码html = browser.page_source# 利用pyquery解析网页代码doc = pq(html)# 获取所有的商品信息的列表items = doc(".Card--doubleCard--wznk5U4").items()arr = []for item in items:product = [item.find(".Price--priceInt--ZlsSi_M").text() + item.find(".Price--priceFloat--h2RR0RK").text(),item.find(".ShopInfo--shopName--rg6mGmy").text()]print(product)arr.append(product)return arr# 往excel续写数据
def add_data(file_name, list):wb = load_workbook(file_name)ws = wb.activefor row in list:ws.append(row)wb.save(file_name)if __name__ == '__main__':arr=queryTaoBao("奥利奥")#因为是续写,所以需要提前创建好文件add_data("E:\\excel\\testexcel.xlsx",arr)
http://www.xdnf.cn/news/2694.html

相关文章:

  • pg数据库删除模式
  • CVE-2024-3431 EyouCMS 反序列化漏洞研究分析
  • 道可云人工智能每日资讯|“人工智能科技体验展”在中国科学技术馆举行
  • 【原创】从s3桶将对象导入ES建立索引,以便快速查找文件
  • 基于 MeloTTS.cpp 的轻量级的纯 C++ 文本转语音(TTS)库
  • 相机-IMU联合标定:相机-IMU外参标定
  • 【二分查找】寻找峰值(medium)
  • 学生管理系统审计
  • 从零开始的二三维CAD软件开发: 系列经验分享-写在开头
  • TensorFlow深度学习实战——基于循环神经网络的文本生成模型
  • ExoPlayer 中的 Timeline、Period 和 Window
  • shell--数组、正则表达式RE
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 端主动唤起 Flutter 开发的界面 简单的整理
  • gitgitgit!
  • 关于CentOS7学习过程中遇到的一些问题
  • JAVA-StringBuilder使用方法
  • 文号验证-同时对两个输入框验证
  • Android开发,实现一个简约又好看的登录页
  • 谷歌浏览器js获取html宽度不准
  • 聊聊spring-boot-data-redis使用过程中的困惑(序列化,反序列化,Jackson, JavaType, TypeReference)
  • 第1篇:Egg.js框架入门与项目初始化
  • [leetcode]2302.统计得分小于k的子数组
  • HTML5 WebSocket:实现高效实时通讯
  • Win11安装Ubuntu20.04简记
  • 软件工程(二):开发模型
  • 传统农耕展陈如何突破?数字多媒体能否重构文化体验边界?
  • 为什么MySQL推荐使用自增主键?
  • 鼠标滚动字体缩放
  • deepseek对IBM MQ SSL 证书算法的建议与解答
  • vue跨域问题总结笔记