【Python】手把手教你用selenium爬取某东月饼数据

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 本期我们使用Pycharm+python3.7.9+selenium实现对京东月饼等信息的爬取,爬取信息不限于月饼,可以是京东上所有在销商品

前言

工欲善其事,必先利其器
本期我们使用Pycharm+python3.7.9+selenium实现对京东月饼等信息的爬取,爬取信息不限于月饼,可以是京东上所有在销商品

selenium(WEB自动化测试工具)

Selenium 1() 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla FirefoxSafariGoogle ChromeOpera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .NetJavaPerl等不同语言的测试脚本。
# selenium安装

selenium下载地址
## 选择和电脑对应的版本下载即可
image.png

## 安装selenium
解压到python安装根目录下

image.png
# 正文

实例化一个浏览器对象

driver = webdriver.Chrome()
driver.get('https://www.jd.com')

定义搜索的关键字

打开浏览器会发现URL的格式

image.png

搜索功能

def get_product(key):
    # 定位到搜索框
    driver.find_element_by_css_selector('#key').send_keys(keyword)
    # 定位到搜索按钮
    driver.find_element_by_css_selector('.button').click()
    # 防止超时,等待加载,设置为10S
    driver.implicitly_wait(10)
    # 最大化浏览器效果

解决图片懒加载

# 解决懒加载
def drop_down():
    for x in range(1,11,2):
        time.sleep(0.5)
        # 控制翻页
        j = x / 10
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

解析商品数据

image.png
通过定位发现,商品都有gl-item属性

拿到商品集合

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

解析商品名称

image.png
通过定位发现,商品名称在p-name下的em标签中

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text

解析商品价格

image.png
通过定位发现,商品价格在p-price下的i标签中

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'

解析商品评价数量

image.png
通过定位发现,商品价格在p-commit下的a标签中

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
        # 商品评价数量
        product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text

解析店铺名称

image.png
通过定位发现,商品价格在span下的a标签中

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
        # 商品评价
        product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text
        # 店铺名称
        product_shop_name = li.find_element_by_css_selector('span.J_im_icon a').text

       #打印数据 
       print(product_shop_name,product_price,product_comment,product_shop_name)

解析数据保存到csv文件

  with open('data_jd.csv',mode='a',encoding='utf-8',newline='') as f:
      csv_write = csv.writer(f)
      csv_write.writerow([product_name,product_price,product_name,product_shop_name])
except Exception as e:
 print(e)

总结

到最后,本期教程完成了爬取京东月饼销售数据的操作,并保存到csv文件,搜索不仅限于月饼,也可用于其他商品。
image.png

PS:本文所爬取的数据无任何敏感数据,此教程仅供学习使用,严谨从事非法活动,法网恢恢疏而不漏。

相关文章
|
1月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
120 5
|
1月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
1月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
103 0
|
1月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
15天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
24 1
|
16天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
17天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
51 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
42 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
22天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
47 6

热门文章

最新文章

下一篇
无影云桌面