【Python爬虫】项目案例讲解,一步步教你爬取淘宝商品数据!

前言

随着互联网时代的到来,人们更加倾向于互联网购物,某宝又是电商行业的巨头,在某宝平台中有很多商家数据,今天带大家使用python+selenium工具获取这些公开的商家数据

环境介绍:

  • python 3.6
  • pycharm
  • selenium
  • csv
  • time
  • random

这次的受害者:淘宝购物平台

1. 创建一个浏览器对象

from selenium import webdriver
driver = webdriver.Chrome()
1.2.

2. 执行自动化页面操作

driver.get('https://www.taobao.com/')
driver.maximize_window()  # 最大化浏览器
driver.implicitly_wait(10)  # 设置浏览器的隐式等待, 智能化的等待
1.2.3.

到这一步,你就可以自己运行代码看看可不可以自动打开你的浏览器进入淘宝的首页

3. 根据关键字搜索商品, 解决登录

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_数据

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_数据_02

复制它的xpath,用xpath语法提取页面标签的元素

def search_product(keyword):# 输入框的标签对象driver.find_element_by_xpath('//*[@id="q"]').send_keys(keyword)word = input('请输入你要搜索商品的关键字:')
1.2.3.4.5.

运行代码

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_数据_03

前面搞定了搜索框的,现在来写点击搜索按钮的,同样复制它的xpath

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_爬虫_04

# 为了避免被检测
import time  # 时间模块  内置模块
time.sleep(random.randint(1, 3))  # 随机休眠1到3秒
driver.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button').click()
1.2.3.4.

4. 解决登录

点击了搜索按钮以后,会弹出登录界面给你,那就继续解决登录

driver.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(TAO_USERNAME)
time.sleep(random.randint(1, 2))
driver.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(TAO_PASSWORD)
time.sleep(random.randint(1, 2))
driver.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
1.2.3.4.5.

5. 解析数据

获取目标数据的div标签

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_python_05

def parse_data():# 所有div标签divs = driver.find_elements_by_xpath('//div[@class="grid g-clearfix"]/div/div')
1.2.3.

用for循环遍历取值

for div in divs:  # 二次提取title = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').textprice = div.find_element_by_xpath('.//strong').text + '元'  # 商品价格  # 手写deal = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text  # 付款人数  # 手写name = div.find_element_by_xpath('.//div[@class="shop"]/a/span[2]').text  # 店铺名称  # 手写location = div.find_element_by_xpath('.//div[@class="location"]').text  # 店铺地址  # 手写detail_url = div.find_element_by_xpath('.//div[@class="pic"]/a').get_attribute('href')  # 详情页地址  # 手写print(title, price, deal, name, location, detail_url)
1.2.3.4.5.6.7.8.9.

运行代码,可以看到获取的数据了

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_搜索_06

6. 最后一步,保存数据

import csvwith open('淘宝.csv', mode='a', encoding='utf-8', newline='') as f:csv_write = csv.writer(f)  # 实例化csv模块写入对象csv_write.writerow([title, price, deal, name, location, detail_url])
1.2.3.4.5.

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_python_07

最新!Python爬虫项目案例讲解一步步教你爬取淘宝商品数据_爬虫_08

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

## 1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot自动装配原理及分析

一、什么是自动装配 在使用SpringBoot的时候,会自动将Bean装配到IOC容器中。例如我们在使用Redis数据库的时候,会引入依赖spring-boot-starter-data-redis。在引入这个依赖后,服务初始化的时候,会将操作Redis需要的组件注入到Ioc…

vue3 项目中 arguments 对象获取失败问题

问题 在 vue3 项目中 获取到的 arguments 对象与传入实参不符,打印出函数中的 arguments 对象显示如下: 原因 作者仔细回看代码才发现,自己一直用的是 vue3 的组合式写法,函数都是箭头函数,而箭头函数不存在 argumen…

故障诊断传感器的位置会影响振动信号分类的精度吗?

问题描述:故障诊断传感器的位置会影响振动信号分类的精度吗? 问题解答: 是的,故障诊断中传感器的位置确实可能会影响振动信号分类的精度。 首先,传感器的位置决定了能够采集到的振动信号的特性。如果传感器靠近故障…

cetos7搭建部署k8s 版本1.28

主机分配 内存最少是4G cpu个数最少两个 IP内存CPU主机名192.168.231.12044K1 192.168.231.12144K2192.168.231.12244K3 关闭防火墙 systemctl stop firewalled 关闭swap vim /etc/fstab 设置主机名称 hostnameset 安装docker 三个主机 初始化集群 在mas…

1432 - 走出迷宫的最少步数-广度优先搜索BFS

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

第五篇:其他窗口部件 QAbstractButton

QAbstractButton QAbstractButton 类是按钮部件的抽象基类&#xff0c;提供了按钮的通用功能。它的子类包括标准按钮 QPushButton、工具按钮 QToolButton、复选框 QCheckBox和单选按钮 QRadioButton 等。 QPushButton QPushButton 提供了创建交互按钮的基本功能。它可以包含…

openssl3.2 - 官方demo学习 - smime - smenc.c

文章目录 openssl3.2 - 官方demo学习 - smime - smenc.c概述笔记END openssl3.2 - 官方demo学习 - smime - smenc.c 概述 读取X509证书, 用PKCS7加密明文(证书 明文 3DES_CBC), 保存为MIME格式的密文 openssl API的命名含义 BIO_new_file “new” a “file”, return a “…

开发安全之:Server-Side Request Forgery

Overview 函数 fsockopen() 将使用资源 URI 的用户控制数据启动与第三方系统的网络连接。攻击者可以利用此漏洞代表应用程序服务器发送一个请求&#xff0c;因为此请求将自应用程序服务器内部 IP 地址发出。 Details 当攻击者可以影响应用程序服务器建立的网络连接时&#xf…

css3+javaScript实现一个左右钟摆-摇晃的红灯笼网页特效

css3javaScript实现一个左右钟摆-摇晃的红灯笼网页特效&#xff01;前天逛博客时无意中看见了&#xff0c;别人的博客顶部有一个会左右钟摆的摇晃的红灯笼&#xff0c;产生了想法&#xff0c;我也想给自己做一个&#xff0c;但是网上找了很多方案&#xff0c;都没有实现。终于在…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 &#xff08;三&#xff09; 第三遍阅读&#xff08;精读&#xff09;3.1 Attention和Self-Attention的区别&#xff1f;3.2 Transformer是如何进行堆叠的&#xff1f;3.3 如何理解Positional Encoding&#xff1f;3.x 文章涉及…

【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]

阅读导航 引言一、简介二、成员函数三、使用示例四、C模拟实现五、std::shared_ptr的线程安全问题六、总结温馨提示 引言 在 C 动态内存管理中&#xff0c;除了 auto_ptr 和 unique_ptr 之外&#xff0c;还有一种智能指针 shared_ptr&#xff0c;它可以让多个指针共享同一个动…

钉钉副总裁李智勇:AI超级助理,提升大模型时代生产力

微软比尔盖茨此前曾预言:“五年内&#xff0c;每个人都将拥有AI私人助理Agent&#xff0c;Agent将颠覆软件行业 。” 近日以来&#xff0c;在GPT store正式上线点爆情绪之后&#xff0c;无论国内外&#xff0c;Agent都是创业圈里炙手可热的新贵。一场关于Agent创业比拼大赛&am…

GitLab服务器忘记root密码处理方式

GitLab服务器忘记root密码处理方式 文章目录 GitLab服务器忘记root密码处理方式1. Gitlab查看用户id号1. 通过api接口查询2. 在Linux终端里直接通过curl命令查询 2. 进入GitLab数据库中查询并修改root密码 1. Gitlab查看用户id号 1. 通过api接口查询 接口查询地址&#xff1a;…

S2-04 ESP-IDF开发 : IIC

IIC IIC(Inter&#xff0d;Integrated Circuit)总线是一种由NXP&#xff08;原PHILIPS&#xff09;公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信&#xff0c;在小数据量场合使用&#xff…

【Linux第二课-权限】操作系统、Linux用户、Linux权限、Linux文件类型、粘滞位

目录 操作系统shell外壳为什么有shell外壳shell外壳是什么shell外壳工作原理 Linux用户root用户与非root用户root用户与普通用户的切换普通用户 --> root用户root用户 --> 普通用户普通用户 --> 普通用户对一条指令提升为root权限进行执行 Linux权限Linux中的权限角色…

jQuery深度笔记:从基础到高级

一、jQuery简介 jQuery是一个快速、小巧且富有特色的JavaScript库。自2006年诞生以来&#xff0c;它已经成为Web开发中最受欢迎的工具之一。通过简化和统一JavaScript API&#xff0c;jQuery使得开发者能够更高效地编写交互式网页和复杂的前端应用。 二、选择器 jQuery的选择器…

解决国内Linux服务器无法使用Github的方法

解决思路&#xff1a;修改Host https://www.ipaddress.com/ 利用上面的网站查询github.com和raw.githubusercontent.com的DNS解析的IP地址 最后&#xff0c;修改服务器的/etc/hosts 添加如下两行&#xff1a; 140.82.112.3 github.com 185.199.108.133 raw.githubuserconte…

树形结构下拉框组件vue-treeselect的使用(安装、模糊匹配、单选、多选、延迟加载、异步搜索等)

一、基本使用流程 首先npm安装依赖 npm install riophae/vue-treeselect --save然后在需要使用的组件中引入 import Treeselect from riophae/vue-treeselect import riophae/vue-treeselect/dist/vue-treeselect.css声明组件 components: { Treeselect }使用 <treesele…

安装布隆过滤器

上传并解压文件解压文件 tar -zxvf RedisBloom-2.2.4.tar.gz 进入解压好的文件 make一下 返回进入conf 配置文件 loadmodule /usr/local/etc/redis/redisbloom.so 粘入 拷贝redisbloom.so到容器 : docker cp redisbloom.so redis:/usr/local/etc/redis 重启redis : docker …

【设计模式】建造者模式就是游戏模式吗?

什么是建造者模式&#xff1f; 传说女娲是用泥巴捏出人来的&#xff0c;当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子&#xff0c;但是具体到每个部位&#xff0c;却有有所不同&#xff1a;有的小泥人手长一点&#xff0c;有的手短一点&#xff1b;有的脑袋圆…