python爬虫实例电商_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页的数据了

项目介绍: 一款商城购物 App,商品数据采用 Python 爬虫爬取自某小型电商平台,服务端部署在腾讯云。项目主要分为:主、分类、购物车、消息、和“我的”模块。特点 采用 Kotlin 语言进行开发 采用 MVP + dagger 2 架构 组件化开发,减少模块间的耦合 采用 Retrofit + RxKotlin 进行网络请求 使用 ARouter 进行面路由和 EventBus 进行全局事件广播 使用到的第三方开源库 项目名称 简介 RxKotlin RxJava bindings for Kotlin RxAndroid 在 Android 中使用 RxJava ARouter 帮助 Android App 进行组件化改造的路由框架 Retrofit HTTP 请求工具库 OkHttp 适用于 Android 和 Java 应用的网络请求框架 Dagger 强大的依赖注入框架 Glide 好用的图片加载框架 CircleImageView 圆形图片不复杂 MultiStateView 通用状态切换视图 RxBus 适用于 Kotlin 的 RxBus FlowLayout Android 流式布局,支持单选、多选等,适合用于产品标签等 leakcanary 使用于 Android 和 Java 和内存泄漏检查工具 BadgeView 支持自由定制外观、拖拽消除的 MaterialDesign 风格 Android BadgeView使用到的工具/网站 网站名称 简介 Iconfont 阿里巴巴矢量图标库,提供了本项目中的大部分矢量图 aconvert 在线调整图片大小(PNG, JPG 和 GIF) convertio 在线图像文件转换器,支持 SVG 转换成 PNG logoko 在线 logo 设计 图帮主 在线平面设计 shields metadata 图标设计 compresspng 在线压缩 PNG 图像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值