Python爬取某宝商品数据案例:100页的价格、购买人数等数据
时间:2022-07-25
本文章向大家介绍Python爬取某宝商品数据案例:100页的价格、购买人数等数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
随着互联网时代的到来,人们更加倾向于互联网购物,某宝又是电商行业的巨头,在某宝平台中有很多商家数据,今天带大家使用python+selenium工具获取这些公开的。
本篇文章适合Python零基础、对爬虫数据采集感兴趣的同学!
环境介绍:
python 3.6pycharmseleniumtime
selenium简介
自动化测试工具,驱动浏览器帮助我们获取到渲染之后的数据
模仿人的行为操作浏览器(用户行为加上代码逻辑的结合)
安装模块
pip install selenium
步骤
安装Webdriver
打开Google浏览器,点击进入设置界面
进入界面后点击关于Chrome,然后找到你Google浏览器的版本,安装Webdriver要对应浏览器的版本
导入模块
import time
import re
import csv
from selenium import webdriver
from selenium.webdriver import ActionChains
from 淘宝爬虫 import constans
入口测试代码
def search_product(key):
"""模拟搜索商品,登陆账户,获取最大页数"""
driver.get('http://www.taobao.com')
driver.find_element_by_id('q').send_keys(key) # 输入框输入商品关键字
driver.find_element_by_class_name('btn-search').click() # 点击搜索按钮
driver.implicitly_wait(10) # 隐式等待
driver.maximize_window() # 最大化浏览器
def main()
search_product(keyword)
if __name__ == '__main__':
keyword = input('请输入你要查询的商品数据:')
driver = webdriver.Chrome()
main()
解决登陆和解决滑块验证
driver.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(constans.USERNAME) # 找到用户名输入账号
time.sleep(1)
driver.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(constans.PASSWORD) # 找到密码框输入密码
time.sleep(2)
login = driver.find_element_by_xpath("//span[contains(@class, 'btn_slide')]") # 找到滑动验证码滑块 手写
action = ActionChains(driver) # 创建动作连对象
action.click_and_hold(on_element=login) # 点击滑块维持动作
action.move_by_offset(xoffset=258, yoffset=0) # 设置动作链坐标长度
action.pause(0.5).release().perform() # 设置动作链执行时间 释放鼠标 执行动作链
driver.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click() # 找到登陆按钮点击
driver.implicitly_wait(10) # 隐式等待
解析数据
def get_product():
for div in divs:
info = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text # 商品名称
price = 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').text # 店铺名称
print(info, price, deal, name, sep='|') # 分隔符
with open('data2.csv', 'a', newline='') as csvfile: # newline='' 指定一行一行写入
csvwriter = csv.writer(csvfile, delimiter=',') # delimiter=',' csv数据的分隔符
csvwriter.writerow([info, price, deal, name])
运行代码,效果如下图:
这样就可以获取第一页的数据了
运行代码,效果如下图:
解析页码
page = driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text # 找到页码标签
page = re.findall('(d+)', page)[0]
# print('商品页数:', page)
return int(page)
def main():
"""程序的入口"""
print('正在爬取第1页的数据')
page = search_product(keyword)
get_product()
page_num = 1
while page_num != page:
print('*' * 100)
print('正在爬取第{}页的数据'.format(page_num + 1))
print('*' * 100)
driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword, 44 * page_num)) # 拼接产品url地址
driver.implicitly_wait(10) # 浏览器等待方法
get_product()
page_num += 1
driver.quit()
最后运行代码,就可以爬取100页的数据了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyTorch8:损失函数
- 浅谈ThreadLocal
- 三分钟完成 ubuntu16.04初始化,Java,maven,docker环境的部署
- VMware 安装运行 deepin 虚拟机 | 体验中国深度
- 单机KVM虚拟化快照定时创建删除快照
- 批量ping脚本
- 批量ssh信任脚本
- Oracle表级备份
- Linux脚本运行报错解决方法 bad interpreter: No such file or directory
- MySQLdump里的秘密,终于被我发现了
- HTTP各种特性总览
- django查询今天,昨天,一周,分组统计月,年
- 关于 z-index,你可能一直存在误区
- Java浮点数机制及所存在的问题
- SAP UI5和React的页面渲染性能比较